diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po
index e0481dd241..e3f352344b 100644
--- a/locale/ar/LC_MESSAGES/django.po
+++ b/locale/ar/LC_MESSAGES/django.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: RanaJT, 2023\n"
 "Language-Team: Arabic (http://app.transifex.com/zulip/zulip/language/ar/)\n"
@@ -22,57 +22,51 @@ msgstr ""
 "Language: ar\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "غير مسموح للمستعملين الزائرين"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "منظمة غير صالحة"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "تيارات عامة"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "تيارات خاصة"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "الرسائل المباشرة "
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "وقت البدء متأخر عن وقت الانتهاء. البدء: {start}, الانتهاء: {end} "
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "No analytics data available. Please contact your server administrator."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "إعدادات غير صالحة"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -81,7 +75,7 @@ msgid ""
 "users to join."
 msgstr "لم يتبق لمنظمتك أي تراخيص خاصة بـ\"زوليب\" ولا يمكنها قبول مستخدمين جدد بعد الآن. رجاءً [قم بزيادة عدد التراخيص]({billing_page_link}) أو [قم بتعطيل المستخدمين غير النشطين]({deactivate_user_help_page_link}) للسماح للمستخدمين الجدد بالانضمام."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -90,7 +84,7 @@ msgid ""
 "join."
 msgstr "بقي لمنظمتك ترخيص خاص بـ\"زوليب\" واحد فقط. يمكنك [زيادة عدد التراخيص]({billing_page_link}) أو [قم بتعطيل المستخدمين غير النشطين]({deactivate_user_help_page_link}) للسماح لأكثر من مستخدم واحد بالانضمام."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -99,7 +93,7 @@ msgid ""
 "join."
 msgstr "لم يتبق لدى منظمتك سوى ترخيصين خاصات بـ\"زوليب\". يمكنك [زيادة عدد التراخيص]({billing_page_link}) أو [قم بتعطيل المستخدمين غير النشطين]({deactivate_user_help_page_link}) للسماح لأكثر من مستخدمين بالانضمام."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -108,7 +102,7 @@ msgid ""
 "join."
 msgstr "لم يتبق لمنظمتك إلا ثلاثة تراخيص خاصة بـ\"زوليب\". يمكنك [زيادة عدد التراخيص]({billing_page_link}) أو [قم بتعطيل المستخدمين غير النشطين]({deactivate_user_help_page_link}) للسماح لأكثر من ثلاثة مستخدمين بالانضمام."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -117,11 +111,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "لم يتمكن العضو الجديد ({email}) من الانضمام إلى منظمتك لأن جميع التراخيص الخاصة بـ\"زوليب\" لمنظمتك قيد الاستخدام. رجاءً [قم بزيادة عدد التراخيص]({billing_page_link}) أو [قم بتعطيل المستخدمين غير النشطين]({deactivate_user_help_page_link}) للسماح للأعضاء الجدد بالانضمام."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "جميع التراخيص الخاصة بـ\"زوليب\" لهذه المنظمة قيد الاستخدام حاليًا."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -137,124 +131,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} تنتهي في {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Unknown payment method. Please contact {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "هناك خطأ ما. الرجاء التواصل {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "هناك خطأ ما. الرجاء إعادة تحميل الصفحة."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "هناك خطأ ما. الرجاء الإنتظار لبضع دقائق و إعادة المحاولة."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "غير قادر على تحديث الخطة. انتهت صلاحية الخطة واستبدلت بخطة جديدة."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "غير قادر على تحديث الخطة. انتهت الخطة."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "غير قادر على تحديث التراخيص يدويًا. خطتك على إدارة الترخيص التلقائي."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "خطتك موجودة بالفعل على تراخيص {licenses} في فترة الفوترة الحالية."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "لا يمكنك تقليل التراخيص في فترة الفوترة الحالية."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "تمت جدولة خطتك بالفعل للتجديد مع تراخيص {licenses_at_next_renewal}."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "لا شيء لتغييره."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "لا يوجد زبون لهذه المنظمة!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "الجلسة غير موجودة"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "يجب أن يكون مسؤول الفوترة أو مالك منظمة"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "لم يتم العثور على القصد من الدفع"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "مرر stripe_session_id أو stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -262,54 +256,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "إعدادات غير صالحة"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -318,8 +319,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "خطأ في الخادم الداخلي"
 
@@ -424,7 +458,7 @@ msgstr "15 day actives"
 msgid "Total users"
 msgstr "إجمالي المستخدمين"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "المستخدمين"
 
@@ -564,36 +598,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "تأكد من نسخ الرابط بشكل صحيح في متصفحك. إذا كنت لا تزال تواجه هذه الصفحة ، فمن المحتمل أن يكون هذا خطأنا. آسفون."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "الفواتير"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "إلغاء"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "تأكيد"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "تم تجاوز حد المعدل. "
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "يمكنك المحاولة مرة أخرى في %(retry_after)s ثانية."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "تحديث"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -615,6 +745,451 @@ msgstr "فئات"
 msgid "All"
 msgstr "الجميع"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "مجتمع تنمية \"زوليب\""
@@ -634,11 +1209,7 @@ msgstr "انضم كمضيف ذاتي"
 msgid "Join as a contributor"
 msgstr "انضم كمساهم"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -653,12 +1224,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "إنشاء منظمة"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -691,51 +1262,48 @@ msgstr "تسعير التعليم"
 msgid "View pricing"
 msgstr "عرض السعر"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "\"زوليب\" للأعمال"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "اتصل بالدعم"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "من"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "منظمة"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "موضوع"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "رسالة"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "إرسال"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "شكراً لاتصالك بنا"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "شكراً لاتصالك بنا!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -751,14 +1319,6 @@ msgstr "الصورة الرمزية"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "تحديث"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -806,7 +1366,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "سجل"
 
@@ -839,8 +1399,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "تسجيل الدخول"
 
@@ -873,26 +1433,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "غير قادر على الاتصال بـ\"زوليب\"."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "قد تتأخر التحديثات."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "إعادة المحاولة قريبًا ..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "جرب الآن."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "رسائل"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1115,21 +1671,21 @@ msgstr "المستخدمون الضيوف"
 msgid "Normal users"
 msgstr "المستخدمون العاديون"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "اغلاق"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "\"زوليب\""
 
@@ -2352,7 +2908,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2372,7 +2928,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2382,12 +2947,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "عنوان البريد الإلكتروني"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Find accounts"
 
@@ -2419,7 +2984,7 @@ msgstr "إدماجات"
 msgid "Desktop & mobile apps"
 msgstr "تطبيقات سطح المكتب & الهاتف المحمول"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "منظمة جديدة"
 
@@ -2787,25 +3352,16 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "تم تجاوز حد المعدل. "
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "لقد تجاوزت الحد الأقصى لعدد المرات\n                        التي يمكن للمستخدم فيها أن ينفذ هذا الإجراء."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "يمكنك المحاولة مرة أخرى في %(retry_after)s ثانية."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2974,6 +3530,22 @@ msgstr "ماالذي تهتم به؟"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "اشترك لي في نشرة \"زوليب\" الإخبارية منخفضة الحركة (القليل من رسائل بريد إلكتروني في السنة)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "اعد تعيين كلمة المرور"
@@ -3131,123 +3703,107 @@ msgid ""
 "                        "
 msgstr "\n                        بإمكانك أيضاً أن تستخدم تطبيق \"زوليب\" لسطح المكتب .\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "الاشتراكات"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "اشترك {user} للتو في \"زوليب\". (الإجمالي: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "تم قبول دعوتك من قبل {user} للانضمام إلى \"زوليب\"!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "تعيين أمر غير صالح."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "حقل الـ ID {id} غير موجود."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' هي غرفة افتراضية ولا يمكن إضافتها إلى '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "مجموعة الغرفة الافتراضية '{group_name}' موجودة بالفعل"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "الغرفة '{stream_name}' موجودة بالفعل في مجموعة الغرفة الافتراضية '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "الغرفة '{stream_name}' غير موجودة في مجموعة الغرفة الافتراضية '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "لحماية المستخدمين، يحد \"زوليب\" من عدد الدعوات التي يمكنك إرسالها في يوم واحد. نظرًا لأنك وصلت إلى الحد الأقصى، لم يتم إرسال دعوات."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "حسابك جديد جدًا بحيث لا يمكن إرسال دعوات لهذه المنظمة. اسأل مسؤول المنظمة، أو مستخدم أكثر خبرة."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "لم يتم التحقق من صحة بعض رسائل البريد الإلكتروني، لذلك لم نرسل أي دعوات."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "لم نتمكن من دعوة أي شخص."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3277,72 +3833,72 @@ msgstr "لا يمكن تغيير محتوى الرسالة أثناء تغيير
 msgid "Widgets cannot be edited."
 msgstr "لا يمكن تعديل الأدوات."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "لقد أوقفت منظمتك تعديل الرسائل"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "ليس لديك إذن لتعديل هذه الرسالة"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "انقضت المهلة الزمنية لتعديل هذه الرسالة"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "قام {user} بوضع علامة تم الحل على هذا الموضوع."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "قام {user} بوضع علامة على هذا الموضوع على أنه لم يتم حله."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "تم نقل هذا الموضوع إلى {new_location} بواسطة {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "رسالة نُقلت من هذا الموضوع إلى {new_location} بواسطة {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} تم نقل رسائل من هذا الموضوع إلى {new_location} بواسطة {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "تم نقل هذا الموضوع هنا من {old_location} بواسطة {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} تم نقل رسائل هنا من {old_location} بواسطة {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "لقد أوقفت منظمتك تعديل الرسائل"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "ليس لديك إذن لتعديل هذه الرسالة"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "انقضت المهلة الزمنية لتعديل هذه الرسالة"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "ليس لديك إذن بنقل هذه الرسالة"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3361,137 +3917,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "الرسالة(الرسائل) غير صالحة"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "تعذر تقديم الرسالة"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "مُتوقع غرفة واحدة بالضبط"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "نوع البيانات غير صالح للغرفة"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "نوع البيانات غير صالح للمستلمين"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "قد تحتوي قوائم المستلمين على رسائل بريد إلكتروني أو معرفات ID للمستخدم، ولكن ليس كليهما."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "حاول الروبوت الخاص بك {bot_identity} إرسال رسالة إلى الغرفة ذات الـ ID {stream_id} ، ولكن لا يوجد غرفة بهذا الـ ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "حاول الروبوت الخاص بك {bot_identity} إرسال رسالة إلى الغرفة {stream_name}، لكن هذه الغرفة غير موجودة. انقر [هنا]({new_stream_link}) لإنشائها."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "حاول الروبوت الخاص بك {bot_identity} إرسال رسالة إلى الغرفة {stream_name}. الغرفة موجودة ولكن ليس فيها أي مشتركين."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "مواضيع مطلوبة في هذه المنظمة"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "الأدوات: أرسل مبرمج الـ API محتوى JSON غير صالح"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "الأدوات: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "يوجد بالفعل رمز تعبيري مخصص بهذا الاسم."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} غيّر [أذونات الوصول](/help/stream-permissions) لهذه الغرفة من **{old_policy}** إلى **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3500,38 +4061,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} غيّر [posting permissions](/help/stream-sending-policy) لهذه الغرفة:\n\n* **Old permissions**: {old_policy}.\n* **New permissions**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} أعاد تسمية الغرفة {old_stream_name} إلى {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "بدون وصف."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "قام {user} بتغيير وصف هذه الغرفة."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "الوصف القديم"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "الوصف الجديد"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "أبديًا"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "سيتم الآن الاحتفاظ بالرسائل في هذه الغرفة إلى الأبد."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3545,7 +4106,7 @@ msgstr "{user} غيّر [فترة الاحتفاظ بالرسائل](/help/messa
 msgid "You cannot attach a submessage to this message."
 msgstr "لا يمكنك إرفاق رسالة فرعية بهذه الرسالة."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3555,187 +4116,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "الـ API هذا غير صالح لروبوتات الويب هوك الواردة."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "الحساب غير مرتبط بهذا المجال الفرعي"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "لا تقبل نقطة النهاية هذه طلبات الروبوت."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "يجب أن يكون مسؤول الخادم"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "إذن غير كاف"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "تتطلب نقطة النهاية هذه مصادقة HTTP الأساسية."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "رأس المصادقة غير صالح للمصادقة الأساسية"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "رأس المصادقة مفقود للمصادقة الأساسية"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "يمكن لروبوتات الويب هوك الوصول إلى الويب هوك فقط"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "تم تعطيل حسابك {username}. يرجى الاتصال بمسؤول منظمتك لإعادة تفعيله."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "كلمة المرور ضعيفة للغاية."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "يجب أن يكون النطاق الفرعي بطول 3 أو أكبر."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "لا يمكن أن يبدأ النطاق الفرعي أو ينتهي بـ '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "يمكن أن يحتوي النطاق الفرعي على أحرف صغيرة وأرقام و'-' فقط."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "رجاءً استخدم عنوان بريدك الإلكتروني الحقيقي."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "المنظمة التي تحاول الانضمام إليها باستخدام {email} غير موجودة."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "يرجى طلب دعوة لـ {email} من مسؤول المنظمة."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "عنوان بريدك الإلكتروني {email}، ليس في أحد المجالات المسموح لها بالتسجيل في حسابات هذه المنظمة."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "غير مسموح بعناوين البريد الإلكتروني التي تحتوي على + في هذه المنظمة."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "لا يمكن للأعضاء الجدد الانضمام إلى هذه المنظمة لأن جميع تراخيص \"زوليب\" التي تملكها قيد الاستخدام. رجاءً تواصل مع الشخص الذي دعاك واطلب منه زيادة عدد التراخيص، ثم حاول مرة أخرى."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "كلمة مرور جديدة"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "تأكيد كلمة السر الجديدة"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "تم تعطيل كلمة المرور الخاصة بك لأنها ضعيفة للغاية. أعد تعيين كلمة المرور الخاصة بك لإنشاء كلمة مرور جديدة."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "رمز"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "رجاءً إدخال 10 رسائل بريد إلكتروني على الأكثر."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "لم نتمكن من العثور على منظمة \"زوليب\" تلك."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "موضوع مفقود"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "لا يمكن الإرسال إلى عدة غُرف"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "غرفة مفقودة"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "يجب أن تملك الرسالة مستلمين"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "نوع الرسالة غير صالح"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "مرفق غير صالح"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "حدث خطأ أثناء حذف المرفق. رجاءً حاول مرة أخرى في وقت لاحق."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "يجب أن تحتوي الرسالة على مستلمين!"
 
@@ -3792,88 +4353,88 @@ msgstr "قام المستخدم بتعطيل مزامنة المسودات."
 msgid "Draft does not exist"
 msgstr "المسودة غير موجودة"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "افتح \"زوليب\" لرؤية محتوى المفسد"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "عنوان غير صحيح."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "خارج المجال الخاص بك."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "عناوين البريد الإلكتروني التي تحتوي على + غير مسموح بها."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "محجوز لروبوتات النظام."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} لديه حساب بالفعل"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "لديه حساب بالفعل."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "تم تعطيل الحساب."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "رمز تعبيري مخصص غير صالح."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "اسم رمز تعبيري مخصص غير صالح."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "تم تعطيل هذا الرمز التعبيري المخصص."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "شِفرة رمز تعبيري غير صالحة."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "اسم رمز تعبيري غير صالح."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "نوع رمز تعبيري غير صالح."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "يجب أن يكون مسؤول منظمة أو مؤلف رموز تعبيرية"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "اسم الرمز التعبيري مفقود"
 
@@ -3881,119 +4442,119 @@ msgstr "اسم الرمز التعبيري مفقود"
 msgid "Could not allocate event queue"
 msgstr "تعذر تخصيص قائمة انتظار الحدث"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "لم يتم تسجيل الدخول: يلزم مصادقة API أو جلسة المستخدم"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "الغرفة '{stream}' غير موجودة"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "الغرفة بالـID '{stream_id}' غير موجود"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "صاحب المنظمة"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "المستعمل"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "لا يمكن تعطيل {entity} فقط."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Markdown غير صالح يتضمن البيان: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "تجاوز استخدام API حد المعدل"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON تالف"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "يجب أن يكون عضوا في المنظمة"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "يجب أن يكون مسؤول منظمة"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "يجب أن يكون صاحب منظمة"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "اسم المستخدم أو كلمة المرور غير صحيحة"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "الحساب معطل"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "تم تعطيل هذه المنظمة"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "تم تعطيل تسجيل خدمة إرسال الإشعارات إلى الجوال لخادمك"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "تم تعطيل مصادقة كلمة المرور في هذه المنظمة "
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "تم تعطيل كلمة مرورك ويجب إعادة تعيينها"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "مفتاح API غير صالح"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "مفتاح API مشوه"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "تعذر تحليل الطلب: هل أنشأ {webhook_name} هذا الحدث؟"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "المجال الفرعي غير صالح"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "تم رفض الوصول"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4001,47 +4562,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "التفاعل موجود بالفعل."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "رد الفعل غير موجود."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "يجب أن يحدد الحساب الخارجي المخصص نمط عنوان URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "نوع الحساب الخارجي غير صالح"
 
@@ -4139,106 +4700,106 @@ msgstr "إنتاجية"
 msgid "Version control"
 msgstr "التحكم في الإصدار"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "يجب ألا تكون الرسالة فارغة"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "يجب ألا تحتوي الرسالة على وحدات فارغة"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "مشغل تضيق العرض غير صالح: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "الوسيط 'anchor' مفقود."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "مذيع غير صالح"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "إذا كنت مستخدمًا جديدًا لـ \"زوليب\"، فراجع [دليل البدء]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "أهلا ومرحبا بكم في \"زوليب\"!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "يمكنني أيضًا مساعدتك في الإعداد! ما عليك سوى النقر في أي مكان على هذه الرسالة أو الضغط على 'r' للرد."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "فيما يلي بعض الرسائل التي أفهمها:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "انتقل إلى [إعدادات الملف الشخصي](#settings/profile) لإضافة [صورة الملف الشخصي](/help/change-your-profile-picture) وتعديل [معلومات ملفك الشخصي](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4247,119 +4808,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "في \"زوليب\"، الغرف [تحدد من يحصل على رسالة](/help/streams-and-topics). إنها تشبه القنوات الموجودة في تطبيقات الدردشة الأخرى."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[تصفح واشترك في الغرف](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "في \"زوليب\"، المواضيع [تخبرك عما تدور حوله الرسالة](/help/streams-and-topics). إنها مواضيع خفيفة، تشبه إلى حد كبير سطر الموضوع في رسالة البريد إلكتروني."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "يتيح لك \"زوليب\" [اختصارات لوحة المفاتيح](#keyboard-shortcuts) للتنقل في التطبيق بسرعة وكفاءة."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "اضغط على `?` في أي وقت لرؤية [ورقة الغش](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "\"زوليب\" يستخدم [Markdown](/help/format-your-message-using-markdown)، وهو تنسيق بديهي **للخط الغامق** و *المائل* والقوائم النقطية وغيرها. انقر [هنا](#message-formatting) للحصول على ورقة الغش."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "تحقق من [نصائحنا للمراسلة](/help/messaging-tips) للتعرف على ردود الفعل بواسطة الرموز التعبيرية وقطع الشفرات وغيرها كثير!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "راجع [دليلنا للبدء](/help/getting-started-with-zulip)، أو تصفح [مركز المساعدة](/help/) لمعرفة المزيد!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "أنا آسف لم أفهم رسالتك. الرجاء تجربة أحد الأوامر التالية:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "هذه غرفة خاصة، كما يتضح من رمز القفل بجانب اسم الغرفة."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "الغرف الخاصة مرئية فقط لأعضاء الغرفة."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "لإدارة هذه الغرفة، انتقل إلى [إعدادات البث]({stream_settings_url}) وانقر على `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "هذه رسالة في الغرفة #**{default_notification_stream_name}** بالموضوع `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "المواضيع هي أداة خفيفة للحفاظ على المحادثات منظمة."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "يمكنك معرفة المزيد حول المواضيع في [الغرف والمواضيع]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "هذه رسالة في الدفق #**{default_notification_stream_name}** بالموضوع `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "JSON غير صالح في الرد"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "تنسيق الرد غير صالح"
 
@@ -4373,45 +4934,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "الرمز غير موجود"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "لقد قامت هذه المنظمة بتعطيل تضمين محتوى الرسائل في الإشعارات المرسلة للجوال"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} المذكور @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "ذكرك {full_name}:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "ذكر {full_name} الجميع:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4423,23 +4984,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "المستخدم غير مخول لهذا الاستعلام"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' لم يعد يستخدم \"زوليب\"."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4459,21 +5020,21 @@ msgstr "الوسيط '{var_name}' مفقود"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "قيمة سيئة لـ '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "حمولة مشوهة"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4510,7 +5071,7 @@ msgstr "الرجاء اختيار أحدهم: 'stream' أو 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "مُعرف غرفة غير صالح"
 
@@ -4524,7 +5085,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4533,7 +5094,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "لم يتم تمكين غرف الويب العامة."
 
@@ -4565,28 +5126,28 @@ msgstr "لا يمكن أن يكون الموضوع فارغًا!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "بيانات المشترك غير متوفرة لهذه الغرفة"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "تعذر استرداد المشتركين للغرفة الخاصة"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} ليس قيمة منطقية"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} ليس تاريخًا"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} ليس dict"
@@ -4597,18 +5158,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} ليس عددًا عشريًا"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} صغير جدًا"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} ليس عددًا صحيحًا"
@@ -4618,24 +5179,24 @@ msgstr "{var_name} ليس عددًا صحيحًا"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} كبير جدًا"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} ليست قائمة"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} غير صالح"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} طويل جدًا (الحد: {max_length} حرفًا)"
@@ -4645,8 +5206,8 @@ msgstr "{var_name} طويل جدًا (الحد: {max_length} حرفًا)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} ليس نص"
@@ -4665,21 +5226,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "قد يتجاوز التحميل حصة التحميل الخاصة بمنظمتك."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "تعذر فك تشفير الصورة؛ هل قمت بتحميل ملف صورة؟"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "حجم الصورة يتجاوز الحد."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "صورة متحركة تالفة."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "تنسيق صورة متحركة غير معروف."
 
@@ -4736,161 +5297,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "الاسم طويل جدًا!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "الاسم قصير جدا!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "أحرف غير صالحة في الاسم!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "تنسيق غير صحيح!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "الاسم قيد الاستخدام بالفعل!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "اسم أو اسم مستخدم سيئ"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "بيانات التكوين غير صالحة!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "نوع الروبوت غير صالح"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "نوع الواجهة غير صالح"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "لا يوجد مثل هذا الروبوت"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "لا يوجد مثل هذا المستخدم"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "تم تعطيل المستخدم"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} لا يمكن أن يكون فارغًا."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} له طول غير صحيح {length} ؛ يجب أن يكون {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} ليست شِفرة لون hex صالحة"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} يجب أن يحتوي بالضبط على {length} عنصرًا"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "المفتاح {key_name} مفقود من {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} ليس allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} خطأ)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} ليس عنوان URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' لا يمكن أن يكون فارغًا."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' ليس اختيارًا صالحًا لـ '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} ليس نص أو قائمة أعداد صحيحة"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} ليس نص أو عددًا صحيحًا"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} لا يحتوي على طول"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} مفقود"
@@ -4924,215 +5485,211 @@ msgstr "خطأ CSRF : {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "أحداث الغرفة"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "متوفر على سحابة \"زوليب\" الأساسية. قم بالترقية للوصول."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "أحرف غير صالحة في اسم الرموز التعبيرية"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "خطأ غير معروف في التعبير العادي"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "أحرف غير صالحة في لغة pygments"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "المشرفون والوسطاء والأعضاء والضيوف"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "المشرفون والوسطاء والأعضاء"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "المشرفون والوسطاء"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "صاحب المنظمة"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "مسؤول المنظمة"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "الوسيط"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "عضو"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "ضيف"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "الويب العامة"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "عامة"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "سجل خاص ومشترك"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "سجل خاص ومحمي"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "سجل عام ومحمي"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "جميع أعضاء الغرفة يمكنهم النشر"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "يمكن فقط لمسؤولي المنظمة النشر"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "يمكن فقط لمسؤولي المنظمة والوسطاء النشر"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "فقط أعضاء المنظمة الكاملين يمكنهم النشر"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "رموز Unicode التعبيرية"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "رموز تعبيرية مخصصة"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "رموز \"زوليب\" التعبيرية الإضافية"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "قائمة الخيارات"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "منتقي الأشخاص"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "نص قصير"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "نص طويل"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "منتقي التاريخ"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "رابط"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "حساب خارجي"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "الضمائر"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "خطأ غير معروف في التعبير العادي"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "رموز Unicode التعبيرية"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "رموز تعبيرية مخصصة"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "رموز \"زوليب\" التعبيرية الإضافية"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "أحرف غير صالحة في اسم الرموز التعبيرية"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "أحرف غير صالحة في لغة pygments"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "أحداث الغرفة"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "متوفر على سحابة \"زوليب\" الأساسية. قم بالترقية للوصول."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "الويب العامة"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "عامة"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "سجل خاص ومشترك"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "سجل خاص ومحمي"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "سجل عام ومحمي"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "جميع أعضاء الغرفة يمكنهم النشر"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "يمكن فقط لمسؤولي المنظمة النشر"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "يمكن فقط لمسؤولي المنظمة والوسطاء النشر"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "فقط أعضاء المنظمة الكاملين يمكنهم النشر"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "المشرفون والوسطاء والأعضاء والضيوف"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "المشرفون والوسطاء والأعضاء"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "المشرفون والوسطاء"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "صاحب المنظمة"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "مسؤول المنظمة"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "الوسيط"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "عضو"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "ضيف"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "عنوان IP غير معروف"
@@ -5145,20 +5702,20 @@ msgstr "نظام تشغيل غير معروف"
 msgid "An unknown browser"
 msgstr "متصفح غير معروف"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "وسيط 'queue_id' مفقود"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "وسيط 'last_event_id' مفقود"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "تم بالفعل إزالة حدث أحدث من {event_id}!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "الحدث {event_id} لم يكن في قائمة الانتظار هذه"
@@ -5196,41 +5753,41 @@ msgstr "كلمة المرور غير صحيحة."
 msgid "User-Agent header missing from request"
 msgstr "رأس وكيل المستخدم مفقود من الطلب"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "لا يمكن أن يكون التصنيف فارغًا."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "يجب أن يحتوي الحقل على خيار واحد على الأقل."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "نوع الحقل غير صالح."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "يمكن إظهار فقط خانتين مخصصتين من الملف الشخصي في ملخص الملف الشخصي. "
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "يوجد بالفعل حقل بهذا التصنيف."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "لا يمكن تحديث الحقل المخصص الافتراضي."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "نقطة النهاية غير متوفرة في الإنتاج."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "لم يتم تمكين DevAuthBackend."
 
@@ -5281,7 +5838,7 @@ msgstr "يجب عليك تحديد عنوان بريد إلكتروني واحد
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5330,19 +5887,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "المرسل مفقود"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "النسخ المتطابق غير مسموح به مع IDs المستخدم المستلم"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "رسالة معكوسة غير صالحة"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "لا يسمح بالنسخ المتطابق لـ Zephyr في هذه المنظمة"
 
@@ -5358,42 +5915,46 @@ msgstr "تم كتم صوت المستخدم بالفعل"
 msgid "User is not muted"
 msgstr "المستخدم ليس مكتومًا"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "الحضور غير مدعوم لمستخدمي الروبوتات."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "لا يوجد بيانات التواجد لـ {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "لم يقم العميل بتمرير أي قيم جديدة."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "يجب أن يمرر العميل emoji_name إذا مرر إما emoji_code أو reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "رمز فارغ أو طوله غير صالح"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "رمز APNS غير صالح"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5408,55 +5969,55 @@ msgstr "يجب أن يكون أحد الوسطاء التاليين على ال
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "يجب تمكين طريقة مصادقة واحدة على الأقل."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "يجب أن تكون منظمة تجريبية."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "يعد النطاق {domain} جزءًا من منظمتك بالفعل."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "لم يتم العثور على إدخال للمجال {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "يجب عليك تحميل ملف واحد بالضبط."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5490,7 +6051,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "يجب عليك تحميل أيقونة واحدة بالضبط."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "الرابط غير موجود."
 
@@ -5518,71 +6079,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "لا يمكن جعل الغرف الخاصة افتراضية."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "يجب عليك تمرير \"new_description\" أو \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "قيمة غير صالحة لـ \"op\". حدد \"add\" أو \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "الغرفة لها هذا الاسم بالفعل!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "لا شيء لفعله. حدد واحدًا على الأقل من \"add\" أو \"delete\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} اشترك في الغرفة {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} اشركك في الغرف التالية:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "تعذر الوصول إلى الغرفة ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "يمكنك فقط دعوة مستخدمي Zephyr mirroring إلى الغرف الخاصة."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} أنشأ الغرف التالية: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} أنشأ غرفة جديدة {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "غُرف جديدة"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** تم إنشاء الغرفة بواسطة {user_name}. **الوصف:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5591,7 +6152,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "json غير صالح للرسالة الفرعية"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "
You are not authorized to view this file.
"
 msgstr "أنت غير مصرح لك لعرض هذا الملف.
"
 
@@ -5615,112 +6176,112 @@ msgstr "فارغ 'to' القائمة"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "رمز غير صالح"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "اسم الملف غير صالح"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "يجب عليك تحديد ملف للتحميل"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "يمكنك فقط تحميل ملف واحد في كل مرة"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "لم يتم توفير بيانات جديدة"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "المستخدم {user_id} عضو بالفعل في هذه المجموعة"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "تم تعطيل تغييرات الصورة الرمزية في هذه المنظمة."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "تم تعطيل تغييرات عنوان البريد الإلكتروني في هذه المنظمة."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "default_language غير صالحة"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "تتم إدارة كلمة مرورك لـ \"زوليب\" في LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "كلمة مرور خاطئة!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "كلمة المرور الجديدة ضعيفة للغاية!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "يجب عليك تحميل صورة رمزية واحدة بالضبط."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "الموضوع ليس صامتًا"
 
@@ -5781,43 +6342,43 @@ msgstr "عناوين البريد الإلكتروني المؤقتة غير م
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "رمز وصول لـ Zoom غير صالح"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "لم يتم تكوين بيانات اعتماد Zoom"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "معرّف جلسة Zoom غير صالح"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "بيانات اعتماد Zoom غير صالحة"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "فشل إنشاء مكالمة Zoom"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "لم يتم تكوين BigBlueButton."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "توقيع غير صالح."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "خطأ في الاتصال بخادم BigBlueButton."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "خطأ في المصادقة مع خادم BigBlueButton."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "أرجع خادم BigBlueButton خطأ غير متوقع."
 
@@ -5850,11 +6411,11 @@ msgstr "حمولة غير صالحة"
 msgid "Unknown webhook request"
 msgstr "طلب ويب هوك غير معروف"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "الموضوع لا يمكن أن يكون فارغًا"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "المحتوى لا يمكن أن يكون فارغًا"
 
@@ -5881,7 +6442,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "غير قادر على التعامل مع الحمولة المحورية"
 
@@ -5898,83 +6459,105 @@ msgstr "رسالة من Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "المجال الفرعي غير صالح لحارس إرسال الإشعارات"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "يجب التحقق من الصحة باستخدام مفتاح API لخادم \"زوليب\" صالح"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID غير صالح"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "نوع الرمز غير صالح"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "user_id أو user_uuid مفقود"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "البيانات خارج الترتيب."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "تحتاج إلى إعادة تعيين كلمة المرور الخاصة بك."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "إعداد id_token مفقود"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP غير صحيح"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "لا يمكن استخدام كل من mobile_flow_otp و desktop_flow_otp معًا."
diff --git a/locale/ar/translations.json b/locale/ar/translations.json
index 8895fd1ffc..d78e90c70f 100644
--- a/locale/ar/translations.json
+++ b/locale/ar/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(أبديًا)",
   "(hidden)": "(مخفي)",
-  "(no description)": "(بدون وصف)",
   "(no topic)": "(لا يوجد موضوع)",
   "(or )": "",
   "(you)": "(أنت)",
   "({message_retention_days} days)": "({message_retention_days} أيام)",
   "/dark (Switch to the dark theme)": "/dark (قم بالتبديل إلى الوضع المظلم)",
   "/light (Switch to light theme)": "/light (التبديل إلى المظهر الفاتح)",
-  "/me is excited (Display action text)": "/me is excited (عرض نص الإجراء)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll أين يجب أن نذهب لتناول الغداء اليوم؟ (إنشاء استطلاع)",
-  "/todo (Create a todo list)": "/todo (إنشاء قائمة مهام)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "يوم واحد",
   "1 hour": "ساعة واحدة",
   "1 week": "أسبوع واحد",
@@ -28,7 +27,7 @@
   "6 hours": "6 ساعات",
   "Total messages: {total_messages}": "إجمالي الرسائل : {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name}  ستتم إزالته من الرسائل التي تمت مشاركتها فيها. لا يمكن التراجع عن هذا الإجراء بعد القيام به. 
",
-  "Stream will be announced in #{notifications_stream}.
": "سيتم الإعلان عن الغرفة في #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "أنت تبحث عن رسائل تم إرسالها بواسطة أكثر من شخص، وهذا غير ممكن.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "أنت تبحث عن رسائل تنتمي إلى أكثر من غرفة، وهذا غير ممكن.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "أنت تبحث عن رسائل تنتمي إلى أكثر من موضوع، وهذا غير ممكن.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "إضافة",
   "Add GIF": "إضافة صورة متحركة",
+  "Add a description": "",
   "Add a new alert word": "إضافة كلمة تنبيه جديدة",
   "Add a new bot": "إضافة روبوت جديد",
   "Add a new code playground": "إضافة مكان جديد لتجربة الشِفرة",
@@ -207,6 +207,7 @@
   "Bot": "بوت",
   "Bot email": "البريد الإلكتروني الآلي",
   "Bot email (a-z, 0-9, and dashes only)": "البريد الإلكتروني الآلي (az ، 0-9 ، والشرطات فقط)",
+  "Bot is deactivated": "",
   "Bot owner": "مالك الروبوت",
   "Bot type": "نوع البوت",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "أغلق نافذة الحوار هذه",
   "Code": "",
   "Code playgrounds": "مكان تجربة الشِفرة",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "طي التأليف",
   "Collapse direct messages": "تصغير الرسائل المباشرة",
   "Collapse message": "طي الرسالة",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "أنشئ طرق المصادقة لمؤسستك.",
   "Configure the default streams new users are subscribed to when joining your organization.": "أنشئ الغرف الافتراضية التي يشترك فيها المستخدمون الجدد عند الانضمام إلى مؤسستك.",
   "Confirm": "تأكيد",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "اعتبر البحث في جميع الغرف العامة .",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "نسخ الشِفرة",
   "Copy link": "نسخ الرابط",
   "Copy link to message": "نسخ الرابط للرسالة",
+  "Copy link to profile": "",
   "Copy link to topic": "نسخ رابط الموضوع",
   "Copy mention syntax": "نسخ سياق الإشارة",
   "Copy version": "نسخ الإصدار",
@@ -358,6 +361,7 @@
   "Delete all drafts": "حذف كل المسودات",
   "Delete all selected drafts": "",
   "Delete code playground?": "حذف مكان تجربة الشِفرة؟",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "حذف حقل الملف الشخصي المخصص؟",
   "Delete data export?": " حذف تصدير البيانات؟",
   "Delete draft": "حذف المسودة",
@@ -413,7 +417,6 @@
   "Domain": "مجال",
   "Don’t allow disposable email addresses": "لا تسمح بعناوين البريد الإلكتروني المؤقتة",
   "Download": "تحميل",
-  "Download .zuliprc": "تحميل .zuliprc",
   "Download botserverrc": "تحميل botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "تنزيل التهيئة لجميع روبوتات الويب هوك الصادرة والنشطة بتنسيق Botserver الخاص بـ\"زوليب\".",
   "Download file": "تحميل الملف",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "التعليم (الربحي)",
   "Education (non-profit)": "التعليم (غير الربحي)",
   "Effect": "تأثير",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "بريد الالكتروني",
   "Email address": "عنوان البريد الإلكتروني",
   "Email address changes are disabled in this organization.": "تم تعطيل التغييرات على عنوان البريد الإلكتروني في هذه المنظمة.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "نسيت؟",
@@ -606,6 +610,8 @@
   "Image": "صورة",
   "In a meeting": "في اجتماع",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "غير نشط",
   "Inactive bots": "روبوتات غير نشطة",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "إدارة هذا الروبوت",
   "Manage this user": "إدارة هذا المستخدم",
   "Manage user": "إدارة المستخدم",
+  "Manage your API key": "",
   "March": "آذار",
   "Mark all messages as read": "تمييز جميع الرسائل كمقروءة",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "تمييز كمقروء",
   "Mark as resolved": "تمييز بتم الحل",
   "Mark as unread from here": "التمييز كغير مقروء من هنا",
@@ -722,6 +730,7 @@
   "Mentioned in": "مذكور في",
   "Mentions": "الإشارات",
   "Menus": "القوائم",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "الرسالة {stream_name}",
   "Message #{stream_name} > {topic_name}": "الرسالة #{stream_name} > {topic_name}",
   "Message actions": "إجراءات الرسائل",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "رسالة {recipient_label}",
   "Message {recipient_names}": "رسالة {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "الرسالة {recipient_name} ({recipient_status})",
+  "Messages": "رسائل",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "لا تنتهي أبدًا",
   "New": "جديد",
   "New direct message": "رسائلة مباشرة جديدة",
+  "New direct message from {sender_full_name}": "",
   "New email": "بريد إلكتروني جديد",
   "New message": "رسالة جديدة",
   "New option": "خيار جديد",
@@ -821,25 +832,20 @@
   "Next unread direct message": "الرسالة المباشرة الغير مقروءة التالية",
   "Next unread followed topic": "",
   "Next unread topic": "الموضوع غير المقروء التالي",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "لا روبوتات تطابق تصفيتك الحالية.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "لا يوجد وصف.",
   "No drafts selected": "",
   "No drafts.": "لا توجد مسودات.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "لا توجد دعوات تطابق تصفيتك الحالية.",
   "No language set": "لم يتم تعيين لغة",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "لم يتم تعيين روابط.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "لا يوجد مستخدمون مطابقون.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "لم يتم تمييز أي موضوع على أنه تم حله.",
   "No topics match your current filter.": "لا يوجد موضوع يطابق تصفيتك الحالية.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "لا توجد اشتراكات لمجموعة المستخدمين.",
   "No user groups": "",
   "No user to subscribe.": "لا يوجد مستخدم للاشتراك.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "غير ربحية (مسجلة)",
   "None": "لا شيء",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "لاحظ أنه سيتم تعطيل أي روبوتات قمت بتحسينها.",
   "Note that organizations are limited to five exports per week.": "لاحظ أن المنظمات تقتصر على خمس عمليات تصدير أسبوعيًا.",
   "Nothing to preview": "لا شيء للمعاينة",
@@ -932,6 +940,7 @@
   "Other permissions": "أذونات أخرى",
   "Other settings": "إعدادات اخرى",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "من المرضى",
   "Outgoing webhook message format": "تنسيق رسالة الويب هوك الصادرة",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "تتطلب المواضيع في رسائل الغرف",
   "Research": "بحث",
   "Resend": "إعادة إرسال",
-  "Resend invitation": "اعادة ارسال الدعوة",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "واجه إعادة الإرسال خطأ. يرجى إعادة التحميل وحاول مرة أخرى.",
+  "Reset to default notifications": "",
   "Reset zoom": "إعادة تعيين التكبير",
   "Restore draft": "استعادة المسودة",
   "Restrict email domains of new users?": "تقييد مجالات البريد الإلكتروني للمستخدمين الجدد؟",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "بحث عن في الموضوع أو محتوى الرسالة.",
   "Search people": "بحث الناس",
   "Search results": "نتائج البحث",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "تعرف على كيفية تهيئة البريد الإلكتروني.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "حدد غرفة أدناه أو غيير اسم الموضوع.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "إظهار عدد الرسائل المميزة بنجمة",
   "Show status text": "إظهار نص الحالة",
   "Show unread counts for": "",
-  "Show/change your API key": "إظهار / تغيير مفتاح API الخاص بك",
   "Showing messages since {time_string}.": "",
   "Sign up": "سجل",
   "Silent mentions do not trigger notifications.": "لا تؤدي الإشارات المكتومة إلى إرسال الإشعارات.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "لا يمكن أن يحتوي وصف الغرفة على سطر جديد.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "سيتم مسح كلمة المرور الخاصة بهم من أنظمتنا، وسيتم تعطيل أي روبوتات طوروها.",
   "Theme": "سمة",
+  "There are no bots.": "",
   "There are no current alert words.": "لا توجد كلمات تنبيه حالية.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "تم تعطيل هذا الروبوت.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "هذا سوف يمسح حقل ملف  الشخصي للمستخدمين .",
   "This will delete the  profile field for 1 user.": "هذا سوف يحذف حقل ملف  الشخصي للمستخدم 1.",
   "This will delete the  profile field for  users.": "هذا سوف يحذف حقل ملف  الشخصي للمستخدمين .",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "الخميس",
   "Time": "زمن",
   "Time format": "تنسيق الوقت",
@@ -1240,6 +1259,7 @@
   "Today": "اليوم",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "تبديل الاشتراك",
   "Toggle the gear menu": "تبديل قائمة التحكم",
   "Toggle topic mute": "تبديل كتم الموضوع",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "ليس لديك الإذن للنشر في هذه الغرفة.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "يحتاج \"زوليب\" إرسال بريد إلكتروني لتأكيد عناوين المستخدمين وإرسال الإشعارات.",
   "Zulip needs your permission to enable desktop notifications.": "\"زوليب\" يحتاج إلى إذنك لتمكين إشعارات سطح المكتب.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "ساهم مجتمع المترجمين المتطوعين لدينا في ترجمة \"زوليب\". إذا كنت ترغب في المساعدة، فراجع ملفإرشادات ترجمة \"زوليب\".",
@@ -1541,6 +1561,9 @@
   "more topics": "المزيد من المواضيع",
   "she/her": "هي/ ـها",
   "they/them": "هم/ ـهم",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, zero {} one {} two {} few {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, zero {} one {} two {} few {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, zero {} one {} two {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, zero {} one {} two {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, zero {} one {} two {} few {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, zero {} one {} two {} few {} many {} other {}}",
diff --git a/locale/be/LC_MESSAGES/django.po b/locale/be/LC_MESSAGES/django.po
index c04311c4e4..a40daef840 100644
--- a/locale/be/LC_MESSAGES/django.po
+++ b/locale/be/LC_MESSAGES/django.po
@@ -1,338 +1,369 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR , YEAR.
-#
-#, fuzzy
+# 
+# Translators:
+# Iван М., 2023
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
-"Language: \n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
+"PO-Revision-Date: 2015-12-06 00:18+0000\n"
+"Last-Translator: Iван М., 2023\n"
+"Language-Team: Belarusian (http://app.transifex.com/zulip/zulip/language/be/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
-"(n%100>=11 && n%100<=14)? 2 : 3);\n"
+"Language: be\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
-msgstr ""
+msgstr "Не дазваляецца гасцявым карыстальнікам"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
-msgstr ""
+msgstr "Няправільная арганізацыя"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
-msgstr ""
+msgstr "Публічныя плыні"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
-msgstr ""
+msgstr "Прыватныя плыні"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
-msgstr ""
+msgstr "Асабістыя паведамленні"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
-msgstr ""
+msgstr "Групавыя асабістыя паведамленні"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
-msgstr ""
+msgstr "Адсутнічае плынь для дыяграмы: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
-msgstr ""
+msgstr "Невядомая назва дыяграмы: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
-msgstr ""
+msgstr "Стартавы час павінен быць пазней за канчатковы час. Старт: {start}, Канец: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
-msgstr ""
+msgstr "Няма даступных дадзеных аналітыкі. Калі ласка, звяжыцеся з адміністратарам сервера."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
 "new users. Please [increase the number of licenses]({billing_page_link}) or "
 "[deactivate inactive users]({deactivate_user_help_page_link}) to allow new "
 "users to join."
-msgstr ""
+msgstr "Ваша арганізацыя больш не мае вольных ліцэнзій Zulip і больш не можа прымаць новых карыстальнікаў. Калі ласка, [павялічце колькасць ліцэнзій]({billing_page_link}) або [дэактывуйце неактыўных карыстальнікаў]({deactivate_user_help_page_link}), каб дазволіць новым карыстальнікам далучыцца."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
-"the number of licenses]({billing_page_link}) or [deactivate inactive users]"
-"({deactivate_user_help_page_link}) to allow more than one user to join."
-msgstr ""
+"the number of licenses]({billing_page_link}) or [deactivate inactive "
+"users]({deactivate_user_help_page_link}) to allow more than one user to "
+"join."
+msgstr "Ваша арганізацыя мае толькі адну ліцэнзію Zulip. Вы можаце [павялічыць колькасць ліцэнзій]({billing_page_link}) або [дэактываваць неактыўных карыстальнікаў]({deactivate_user_help_page_link}), каб дазволіць больш чым аднаму карыстальніку далучыцца."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
-"the number of licenses]({billing_page_link}) or [deactivate inactive users]"
-"({deactivate_user_help_page_link}) to allow more than two users to join."
-msgstr ""
+"the number of licenses]({billing_page_link}) or [deactivate inactive "
+"users]({deactivate_user_help_page_link}) to allow more than two users to "
+"join."
+msgstr "Ваша арганізацыя мае толькі две вольныя ліцэнзіі Zulip. Вы можаце [павялічыць колькасць ліцэнзій]({billing_page_link}) або [дэактываваць неактыўных карыстальнікаў]({deactivate_user_help_page_link}), каб дазволіць больш за двух карыстальнікаў далучыцца."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
-"Your organization has only three Zulip licenses remaining. You can [increase "
-"the number of licenses]({billing_page_link}) or [deactivate inactive users]"
-"({deactivate_user_help_page_link}) to allow more than three users to join."
-msgstr ""
+"Your organization has only three Zulip licenses remaining. You can [increase"
+" the number of licenses]({billing_page_link}) or [deactivate inactive "
+"users]({deactivate_user_help_page_link}) to allow more than three users to "
+"join."
+msgstr "Ваша арганізацыя мае толькі тры ліцэнзіі Zulip, якія засталіся. Вы можаце [павялічыць колькасць ліцэнзій]({billing_page_link}) або [дэактываваць неактыўных карыстальнікаў]({deactivate_user_help_page_link}), каб дазволіць больш за тры карыстальнікам далучыцца."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
-"Zulip licenses are in use. Please [increase the number of licenses]"
-"({billing_page_link}) or [deactivate inactive users]"
-"({deactivate_user_help_page_link}) to allow new members to join."
-msgstr ""
+"Zulip licenses are in use. Please [increase the number of "
+"licenses]({billing_page_link}) or [deactivate inactive "
+"users]({deactivate_user_help_page_link}) to allow new members to join."
+msgstr "Новы карыстальнік ({email}) не можа далучыцца да вашай арганізацыі, таму што ўсе ліцэнзіі Zulip выкарыстаныя. Калі ласка, [павялічце колькасць ліцэнзій]({billing_page_link}) або [дэактывуйце неактыўных карыстальнікаў]({deactivate_user_help_page_link}), каб дазволіць новым членам прыступіць."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
-msgstr ""
+msgstr "Усе ліцэнзіі Zulip для гэтай арганізацыі ў цяперашні час выкарыстоўваюцца."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
 "{num_invites} users."
-msgstr ""
+msgstr "Ваша арганізацыя ня мае ліцэнзій Zulip для запрашэння {num_invites} карыстальнікаў."
 
 #: corporate/lib/remote_billing_util.py:133
 #: corporate/lib/remote_billing_util.py:169
 msgid "Registration is deactivated"
-msgstr ""
+msgstr "Рэгістрацыя адключана"
 
 #: corporate/lib/remote_billing_util.py:166
 msgid "Invalid remote server."
-msgstr ""
+msgstr "Няправільны удалены сервер."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
-msgstr ""
+msgstr "Вам неабходна набыць ліцэнзіі для ўсіх актыўных карыстальнікаў у вашай арганізацыі (мінімум {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
-"Invoices with more than {max_licenses} licenses can't be processed from this "
-"page. To complete the upgrade, please contact {email}."
-msgstr ""
+"Invoices with more than {max_licenses} licenses can't be processed from this"
+" page. To complete the upgrade, please contact {email}."
+msgstr "Рахункі з больш чым {max_licenses} ліцэнзіямі не могуць быць апрацаваныя з гэтай старонкі. Каб завяршыць абнаўленне, калі ласка, звяжыцеся з {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
-msgstr ""
+msgstr "Няма спосабу аплаты ў файле."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
-msgstr ""
+msgstr "{brand} заканчваецца на {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
-msgstr ""
+msgstr "Невядомы спосаб аплаты. Калі ласка, звяжыцеся па {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
-msgstr ""
+msgstr "Нешта пайшло не так. Калі ласка, звяжыцеся з {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
-msgstr ""
+msgstr "Нешта пайшло не так. Калі ласка, перазагрузіце старонку."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
-msgstr ""
+msgstr "Нешта пайшло не так. Калі ласка, пачакайце некалькі секунд і паспрабуйце зноў."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
-msgstr ""
+msgstr "Калі ласка, дадайце крэдытную карту перад пачаткам бясплатнага прабнага перыяду."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
-msgstr ""
+msgstr "Дадайце крэдытную карту, каб запланаваць паляпшэнне."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
-"Unable to update the plan. The plan has been expired and replaced with a new "
-"plan."
-msgstr ""
+"Unable to update the plan. The plan has been expired and replaced with a new"
+" plan."
+msgstr "Немагчыма абнаўленне плану. План скончыўся і быў заменены новым планам."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
-msgstr ""
+msgstr "Немагчыма абнавіць план. План скончыўся."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
-msgstr ""
+msgstr "Немагчыма абнавіць ліцэнзіі ў дзейным білінгавым перыядзе для бясплатнага спробнага плану."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
-msgstr ""
+msgstr "Немажліва абнаўляць ліцэнзіі ўручную. Ваш план знаходзіцца на аўтаматычным кіраванні ліцэнзіямі."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
-"Your organization's request for sponsored hosting has been approved! You "
-"have been upgraded to {plan_name}, free of charge. {emoji}\n"
+"Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
 "\n"
-"If you could {begin_link}list Zulip as a sponsor on your website{end_link}, "
-"we would really appreciate it!"
+"If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Няправільныя параметры"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
-msgstr ""
+msgstr "Памылка"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
 "                        If this error is unexpected, you can\n"
-"                        contact "
-"support.\n"
+"                        contact support.\n"
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
 #: templates/500.html:23
 msgid ""
 "\n"
-"                        Your Zulip chat cannot be loaded because the server "
-"is experiencing technical difficulties.\n"
+"                        Your Zulip chat cannot be loaded because the server is experiencing technical difficulties.\n"
 "                        "
 msgstr ""
 
 #: templates/500.html:28
 msgid ""
 "\n"
-"                        This page will reload automatically when service is "
-"restored.\n"
+"                        This page will reload automatically when service is restored.\n"
 "                        "
 msgstr ""
 
@@ -340,8 +371,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                            In the meantime, you can contact Zulip support.\n"
+"                            In the meantime, you can contact Zulip support.\n"
 "                            "
 msgstr ""
 
@@ -349,8 +379,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                            In the meantime, you can contact\n"
+"                            In the meantime, you can contact\n"
 "                            this server's administrators for support.\n"
 "                            "
 msgstr ""
@@ -359,10 +388,8 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                            If you administer this server, you may want to "
-"check out the\n"
-"                            Zulip server "
-"troubleshooting guide.\n"
+"                            If you administer this server, you may want to check out the\n"
+"                            Zulip server troubleshooting guide.\n"
 "                            "
 msgstr ""
 
@@ -427,7 +454,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr ""
 
@@ -438,7 +465,7 @@ msgstr ""
 #: templates/analytics/stats.html:61 templates/analytics/stats.html:91
 #: templates/analytics/stats.html:113 templates/analytics/stats.html:124
 msgid "Me"
-msgstr ""
+msgstr "Я"
 
 #: templates/analytics/stats.html:62 templates/analytics/stats.html:115
 #: templates/analytics/stats.html:125
@@ -447,19 +474,19 @@ msgstr ""
 
 #: templates/analytics/stats.html:70 templates/analytics/stats.html:132
 msgid "Last week"
-msgstr ""
+msgstr "Мінулы тыдзень"
 
 #: templates/analytics/stats.html:71 templates/analytics/stats.html:133
 msgid "Last month"
-msgstr ""
+msgstr "Мінулы месяц"
 
 #: templates/analytics/stats.html:72 templates/analytics/stats.html:134
 msgid "Last year"
-msgstr ""
+msgstr "Мінулы год"
 
 #: templates/analytics/stats.html:73 templates/analytics/stats.html:135
 msgid "All time"
-msgstr ""
+msgstr "Увесь час"
 
 #: templates/analytics/stats.html:78
 msgid "Messages sent over time"
@@ -515,8 +542,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"            This confirms that the email address for your Zulip account has "
-"changed\n"
+"            This confirms that the email address for your Zulip account has changed\n"
 "            from %(old_email_html_tag)s to %(new_email_html_tag)s\n"
 "            "
 msgstr ""
@@ -538,8 +564,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                    Anyway, shoot us a line at %(support_email_html_tag)s "
-"and we'll get this resolved shortly.\n"
+"                    Anyway, shoot us a line at %(support_email_html_tag)s and we'll get this resolved shortly.\n"
 "                    "
 msgstr ""
 
@@ -569,36 +594,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
-#: templates/zerver/change_email_address_visibility_modal.html:26
-msgid "Cancel"
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
 msgstr ""
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
 msgid "Downgrade"
 msgstr ""
 
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
+#: templates/zerver/change_email_address_visibility_modal.html:26
+msgid "Cancel"
+msgstr "Скасаваць"
+
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -620,6 +741,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -639,11 +1205,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -658,12 +1220,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -696,103 +1258,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
-msgstr ""
+msgstr "Паведамлення"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -808,20 +1315,10 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
-"        This team chat is now being hosted on Zulip Cloud. Please accept the "
-"Zulip Terms of Service to "
-"continue.\n"
+"        This team chat is now being hosted on Zulip Cloud. Please accept the Zulip Terms of Service to continue.\n"
 "        "
 msgstr ""
 
@@ -849,7 +1346,7 @@ msgstr ""
 #: templates/zerver/login.html:102 templates/zerver/register.html:83
 #: templates/zerver/reset.html:24 templates/zerver/reset_confirm.html:24
 msgid "Email"
-msgstr ""
+msgstr "Электронная пошта"
 
 #: templates/zerver/accounts_accept_terms.html:54
 #: templates/zerver/register.html:213
@@ -863,9 +1360,9 @@ msgstr ""
 msgid "Continue"
 msgstr ""
 
-#: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
-#: templates/zerver/register.html:234
+#: templates/zerver/accounts_home.html:5
+#: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
 
@@ -878,9 +1375,10 @@ msgid "You need an invitation to join this organization."
 msgstr ""
 
 #: templates/zerver/accounts_home.html:76 templates/zerver/login.html:50
-#: templates/zerver/login.html:133 templates/zerver/realm_creation_form.html:69
+#: templates/zerver/login.html:133
+#: templates/zerver/realm_creation_form.html:69
 msgid "OR"
-msgstr ""
+msgstr "OR"
 
 #: templates/zerver/accounts_home.html:86
 #, python-format
@@ -897,10 +1395,10 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
-msgstr ""
+msgstr "Уваход"
 
 #: templates/zerver/accounts_send_confirm.html:5
 #: templates/zerver/accounts_send_confirm.html:17
@@ -928,28 +1426,23 @@ msgid ""
 msgstr ""
 
 #: templates/zerver/app/index.html:131
-msgid ""
-"Error loading Zulip. Try reloading the page."
-msgstr ""
-
-#: templates/zerver/app/index.html:176
-msgid "Unable to connect to Zulip."
-msgstr ""
-
-#: templates/zerver/app/index.html:177
-msgid "Updates may be delayed."
+msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
 #: templates/zerver/app/index.html:178
-msgid "Retrying soon…"
+msgid "Unable to connect to Zulip."
 msgstr ""
 
 #: templates/zerver/app/index.html:179
-msgid "Try now."
+msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
+#: templates/zerver/app/index.html:180
+msgid "Retrying soon…"
+msgstr ""
+
+#: templates/zerver/app/index.html:181
+msgid "Try now."
 msgstr ""
 
 #: templates/zerver/auth_subdomain.html:4
@@ -964,14 +1457,10 @@ msgstr ""
 msgid ""
 "\n"
 "                        It appears you ended up here by accident. This site\n"
-"                        is meant to be an intermediate step in the "
-"authentication process\n"
-"                        and shouldn't be accessed manually. If you came here "
-"directly,\n"
-"                        you probably got the address wrong. If you got stuck "
-"here while trying\n"
-"                        to log in, this is most likely a server bug or "
-"misconfiguration.\n"
+"                        is meant to be an intermediate step in the authentication process\n"
+"                        and shouldn't be accessed manually. If you came here directly,\n"
+"                        you probably got the address wrong. If you got stuck here while trying\n"
+"                        to log in, this is most likely a server bug or misconfiguration.\n"
 "                        "
 msgstr ""
 
@@ -998,9 +1487,9 @@ msgstr ""
 #: templates/zerver/change_email_address_visibility_modal.html:22
 #, python-format
 msgid ""
-"You can also change this setting after you join."
+"You can also change this setting after you join."
 msgstr ""
 
 #: templates/zerver/close_window.html:5
@@ -1051,7 +1540,7 @@ msgstr ""
 
 #: templates/zerver/create_realm.html:5
 msgid "Create a new organization"
-msgstr ""
+msgstr "Стварыць новую арганізацыю"
 
 #: templates/zerver/create_realm.html:16
 msgid "Create a new Zulip organization"
@@ -1063,16 +1552,14 @@ msgstr ""
 
 #: templates/zerver/create_realm.html:29
 msgid "Your email"
-msgstr ""
+msgstr "Ваша электронная пошта"
 
 #: templates/zerver/create_realm.html:43
 msgid ""
 "\n"
 "                Or import\n"
-"                from Slack, Mattermost,\n"
-"                Gitter, or Rocket.Chat.\n"
+"                from Slack, Mattermost,\n"
+"                Gitter, or Rocket.Chat.\n"
 "                "
 msgstr ""
 
@@ -1084,8 +1571,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                    The organization you are trying to join, "
-"%(deactivated_domain_name)s, has been deactivated.\n"
+"                    The organization you are trying to join, %(deactivated_domain_name)s, has been deactivated.\n"
 "                    "
 msgstr ""
 
@@ -1093,8 +1579,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                        It has moved to %(deactivated_redirect)s.\n"
+"                        It has moved to %(deactivated_redirect)s.\n"
 "                        "
 msgstr ""
 
@@ -1102,8 +1587,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                    Please contact %(support_email)s to reactivate\n"
+"                    Please contact %(support_email)s to reactivate\n"
 "                    this group.\n"
 "                    "
 msgstr ""
@@ -1149,7 +1633,7 @@ msgstr ""
 
 #: templates/zerver/desktop_redirect.html:17
 msgid "Copy"
-msgstr ""
+msgstr "Капіяваць"
 
 #: templates/zerver/desktop_redirect.html:19
 msgid "You may then close this window."
@@ -1183,21 +1667,21 @@ msgstr ""
 msgid "Normal users"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
-msgstr ""
+msgstr "Закрыць"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -1209,8 +1693,7 @@ msgstr ""
 #, python-format
 msgid ""
 "Congratulations, you have created a new Zulip demo organization. Note\n"
-"    that this organization will be automatically deleted in 30 days. Learn "
-"more\n"
+"    that this organization will be automatically deleted in 30 days. Learn more\n"
 "    about demo organizations here!\n"
 "    "
@@ -1282,8 +1765,8 @@ msgstr ""
 #, python-format
 msgid ""
 "We also have a guide for Setting up your organization"
-"a>."
+"href=\"%(getting_organization_started_link)s\">Setting up your "
+"organization."
 msgstr ""
 
 #: templates/zerver/emails/account_registered.html:57
@@ -1307,8 +1790,8 @@ msgstr ""
 #, python-format
 msgid ""
 " Congratulations, you have created a new demo Zulip organization. Note that "
-"this organization will be automatically deleted in 30 days. Learn more about "
-"demo organizations here: %(demo_organizations_help_link)s!"
+"this organization will be automatically deleted in 30 days. Learn more about"
+" demo organizations here: %(demo_organizations_help_link)s!"
 msgstr ""
 
 #: templates/zerver/emails/account_registered.txt:7
@@ -1356,8 +1839,8 @@ msgstr ""
 #: templates/zerver/emails/realm_reactivation.txt:16
 #, python-format
 msgid ""
-"If you have any questions, please contact this Zulip server's administrators "
-"at %(support_email)s."
+"If you have any questions, please contact this Zulip server's administrators"
+" at %(support_email)s."
 msgstr ""
 
 #: templates/zerver/emails/confirm_demo_organization_email.html:8
@@ -1374,8 +1857,8 @@ msgstr ""
 #, python-format
 msgid ""
 "We received a request to add the email address %(new_email)s to your Zulip "
-"demo organization account on %(realm_uri)s. To confirm this update and set a "
-"password for this account, please click below:"
+"demo organization account on %(realm_uri)s. To confirm this update and set a"
+" password for this account, please click below:"
 msgstr ""
 
 #: templates/zerver/emails/confirm_demo_organization_email.html:11
@@ -1439,8 +1922,8 @@ msgstr ""
 #: templates/zerver/emails/confirm_registration.html:21
 #: templates/zerver/emails/confirm_registration.txt:12
 msgid ""
-"Click the button below to create the organization and register your account. "
-"You'll be able to update the information above if you like."
+"Click the button below to create the organization and register your account."
+" You'll be able to update the information above if you like."
 msgstr ""
 
 #: templates/zerver/emails/confirm_registration.html:23
@@ -1490,8 +1973,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"Your Zulip account on %(realm_uri)s has been "
-"deactivated, and you will no longer be able to log in.\n"
+"Your Zulip account on %(realm_uri)s has been deactivated, and you will no longer be able to log in.\n"
 msgstr ""
 
 #: templates/zerver/emails/deactivate.html:15
@@ -1508,8 +1990,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"Your Zulip account on %(realm_uri)s has been deactivated, and you will no "
-"longer be able to log in.\n"
+"Your Zulip account on %(realm_uri)s has been deactivated, and you will no longer be able to log in.\n"
 msgstr ""
 
 #: templates/zerver/emails/digest.html:27
@@ -1563,8 +2044,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"    If you have trouble logging in, you can reset "
-"your password.\n"
+"    If you have trouble logging in, you can reset your password.\n"
 "    "
 msgstr ""
 
@@ -1633,8 +2113,8 @@ msgstr ""
 #: templates/zerver/emails/invitation_reminder.html:10
 #, python-format
 msgid ""
-"This is a friendly reminder that %(referrer_name)s wants you to join them on "
-"Zulip — the team communication tool designed for productivity."
+"This is a friendly reminder that %(referrer_name)s wants you to join them on"
+" Zulip — the team communication tool designed for productivity."
 msgstr ""
 
 #: templates/zerver/emails/invitation_reminder.html:18
@@ -1674,15 +2154,15 @@ msgstr ""
 #: templates/zerver/emails/macros.html:14
 #, python-format
 msgid ""
-"If you have any questions, please contact this Zulip server's administrators "
-"at %(email)s."
+"If you have any questions, please contact this Zulip server's administrators"
+" at %(email)s."
 msgstr ""
 
 #: templates/zerver/emails/macros.html:18
 #, python-format
 msgid ""
-"Do you have questions or feedback to share? Contact us — we'd love to help!"
+"Do you have questions or feedback to share? Contact us — we'd love to help!"
 msgstr ""
 
 #: templates/zerver/emails/missed_message.html:17
@@ -1778,8 +2258,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"    Do not reply to this email. This Zulip server is not configured to "
-"accept incoming emails (help).\n"
+"    Do not reply to this email. This Zulip server is not configured to accept incoming emails (help).\n"
 "    "
 msgstr ""
 
@@ -1806,8 +2285,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"This email does not include message content because your organization has "
-"disabled message content appearing in email notifications.\n"
+"This email does not include message content because your organization has disabled message content appearing in email notifications.\n"
 "See %(hide_content_url)s for more details.\n"
 msgstr ""
 
@@ -1815,8 +2293,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"This email does not include message content because you have disabled "
-"message content appearing in email notifications.\n"
+"This email does not include message content because you have disabled message content appearing in email notifications.\n"
 "See %(alert_notif_url)s for more details.\n"
 msgstr ""
 
@@ -1880,7 +2357,8 @@ msgstr ""
 #: templates/zerver/emails/notify_new_login.html:4
 #, python-format
 msgid ""
-"Organization: %(organization_url)s Time: %(login_time)s Email: %(user_email)s"
+"Organization: %(organization_url)s Time: %(login_time)s Email: "
+"%(user_email)s"
 msgstr ""
 
 #: templates/zerver/emails/notify_new_login.html:12
@@ -1958,9 +2436,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"If you do not recognize this login, or think your account may have been "
-"compromised, please reset your password at %(reset_link)s or contact us "
-"immediately at %(support_email)s."
+"If you do not recognize this login, or think your account may have been compromised, please reset your password at %(reset_link)s or contact us immediately at %(support_email)s."
 msgstr ""
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:10
@@ -2053,9 +2529,9 @@ msgstr ""
 #: templates/zerver/emails/onboarding_zulip_guide.html:9
 #: templates/zerver/emails/onboarding_zulip_guide.txt:1
 msgid ""
-"As you are getting started with Zulip, we'd love to help you discover how it "
-"can work best for your needs. Check out this guide to key Zulip features for "
-"organizations like yours!"
+"As you are getting started with Zulip, we'd love to help you discover how it"
+" can work best for your needs. Check out this guide to key Zulip features "
+"for organizations like yours!"
 msgstr ""
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:13
@@ -2137,8 +2613,8 @@ msgstr ""
 #: templates/zerver/emails/onboarding_zulip_topics.html:13
 #: templates/zerver/emails/onboarding_zulip_topics.txt:3
 msgid ""
-"Using topics, you can read Zulip one conversation at a time. You'll see each "
-"message in context, no matter how many different discussions are going on."
+"Using topics, you can read Zulip one conversation at a time. You'll see each"
+" message in context, no matter how many different discussions are going on."
 msgstr ""
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:16
@@ -2150,8 +2626,8 @@ msgstr ""
 msgid ""
 "To kick off a new conversation, just pick a stream and start a new topic. "
 "This way, the new conversation thread won't interrupt ongoing discussions. "
-"For a good topic name, think about finishing the sentence: “Hey, can we chat "
-"about…?”"
+"For a good topic name, think about finishing the sentence: “Hey, can we chat"
+" about…?”"
 msgstr ""
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:22
@@ -2162,10 +2638,10 @@ msgstr ""
 #, python-format
 msgid ""
 "Don't stress about picking the perfect name for your topic. If anything is "
-"out of place, it's easy to move messages"
-"a>, rename topics, or even move a topic to a different "
-"stream."
+"out of place, it's easy to move "
+"messages, rename topics, or even "
+"move a topic to a "
+"different stream."
 msgstr ""
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:28
@@ -2252,18 +2728,16 @@ msgstr ""
 #: templates/zerver/emails/password_reset.txt:8
 #, python-format
 msgid ""
-"You previously had an account on %(realm_uri)s, but it has been deactivated. "
-"You can contact an organization administrator to reactivate your account."
+"You previously had an account on %(realm_uri)s, but it has been deactivated."
+" You can contact an organization administrator to reactivate your account."
 msgstr ""
 
 #: templates/zerver/emails/realm_auto_downgraded.html:8
 #, python-format
 msgid ""
 "\n"
-"    Your organization, %(organization_name_with_link)s, has been downgraded "
-"to the Zulip Cloud\n"
-"    Free plan because of unpaid invoices. The unpaid invoices have been "
-"voided.\n"
+"    Your organization, %(organization_name_with_link)s, has been downgraded to the Zulip Cloud\n"
+"    Free plan because of unpaid invoices. The unpaid invoices have been voided.\n"
 "    "
 msgstr ""
 
@@ -2271,8 +2745,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"    To continue on the Zulip Cloud Standard plan, please upgrade again by "
-"going to %(upgrade_url)s.\n"
+"    To continue on the Zulip Cloud Standard plan, please upgrade again by going to %(upgrade_url)s.\n"
 "    "
 msgstr ""
 
@@ -2280,8 +2753,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"    If you think this was a mistake or need more details, please reach out "
-"to us at %(support_email)s.\n"
+"    If you think this was a mistake or need more details, please reach out to us at %(support_email)s.\n"
 "    "
 msgstr ""
 
@@ -2325,8 +2797,8 @@ msgstr ""
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.html:9
 #, python-format
 msgid ""
-"Either you, or someone on your behalf, has requested a log in link to manage "
-"the Zulip plan for %(remote_server_hostname)s."
+"Either you, or someone on your behalf, has requested a log in link to manage"
+" the Zulip plan for %(remote_server_hostname)s."
 msgstr ""
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.html:12
@@ -2359,8 +2831,8 @@ msgstr ""
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.txt:1
 #, python-format
 msgid ""
-"Either you, or someone on your behalf, has requested a log in link to manage "
-"the Zulip plan for %(remote_server_hostname)s."
+"Either you, or someone on your behalf, has requested a log in link to manage"
+" the Zulip plan for %(remote_server_hostname)s."
 msgstr ""
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.txt:4
@@ -2384,8 +2856,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"    Click the button below to confirm your email and log in to Zulip plan "
-"management for %(remote_realm_host)s.\n"
+"    Click the button below to confirm your email and log in to Zulip plan management for %(remote_realm_host)s.\n"
 "    "
 msgstr ""
 
@@ -2448,33 +2919,38 @@ msgstr ""
 msgid ""
 "\n"
 "                    Emails sent! You will only receive emails at addresses\n"
-"                    associated with Zulip organizations. The addresses "
-"entered\n"
+"                    associated with Zulip organizations. The addresses entered\n"
 "                    on the previous page are listed below:\n"
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
 msgid ""
 "\n"
-"                    Enter your email address to receive an email with the "
-"URLs\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
+msgid ""
+"\n"
+"                    Enter your email address to receive an email with the URLs\n"
 "                    for all the Zulip Cloud organizations in which you have\n"
-"                    active accounts. If you have also forgotten your "
-"password,\n"
-"                    you can reset it"
-"a>.\n"
+"                    active accounts. If you have also forgotten your password,\n"
+"                    you can reset it.\n"
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
-msgstr ""
+msgstr "Знайсці ўліковыя запісы"
 
 #: templates/zerver/footer.html:6
 msgid "Product"
@@ -2504,7 +2980,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2606,7 +3082,7 @@ msgstr ""
 
 #: templates/zerver/footer.html:90
 msgid "History"
-msgstr ""
+msgstr "Гісторыя"
 
 #: templates/zerver/footer.html:92
 msgid "Values"
@@ -2716,7 +3192,8 @@ msgstr ""
 msgid "REST API"
 msgstr ""
 
-#: templates/zerver/invalid_email.html:4 templates/zerver/invalid_email.html:13
+#: templates/zerver/invalid_email.html:4
+#: templates/zerver/invalid_email.html:13
 msgid "Invalid email"
 msgstr ""
 
@@ -2760,7 +3237,8 @@ msgstr ""
 msgid "Please sign up using an allowed email address."
 msgstr ""
 
-#: templates/zerver/invalid_realm.html:4 templates/zerver/invalid_realm.html:12
+#: templates/zerver/invalid_realm.html:4
+#: templates/zerver/invalid_realm.html:12
 msgid "Organization does not exist"
 msgstr ""
 
@@ -2789,7 +3267,8 @@ msgid "View without an account"
 msgstr ""
 
 #: templates/zerver/login.html:69
-msgid "You've already registered with this email address. Please log in below."
+msgid ""
+"You've already registered with this email address. Please log in below."
 msgstr ""
 
 #: templates/zerver/login.html:98
@@ -2798,12 +3277,12 @@ msgstr ""
 
 #: templates/zerver/login.html:100
 msgid "Username"
-msgstr ""
+msgstr "Імя карыстальніка"
 
 #: templates/zerver/login.html:111 templates/zerver/register.html:137
 #: templates/zerver/register.html:150 templates/zerver/reset_confirm.html:31
 msgid "Password"
-msgstr ""
+msgstr "Пароль"
 
 #: templates/zerver/login.html:143
 #, python-format
@@ -2821,15 +3300,13 @@ msgstr ""
 
 #: templates/zerver/new_user_email_address_visibility.html:5
 msgid ""
-"Administrators of this Zulip organization will be able to see this email "
-"address.\n"
+"Administrators of this Zulip organization will be able to see this email address.\n"
 "            "
 msgstr ""
 
 #: templates/zerver/new_user_email_address_visibility.html:8
 msgid ""
-"Administrators and moderators of this Zulip organization will be able to see "
-"this email address.\n"
+"Administrators and moderators of this Zulip organization will be able to see this email address.\n"
 "            "
 msgstr ""
 
@@ -2841,14 +3318,13 @@ msgstr ""
 
 #: templates/zerver/new_user_email_address_visibility.html:14
 msgid ""
-"Other users in this Zulip organization will be able to see this email "
-"address.\n"
+"Other users in this Zulip organization will be able to see this email address.\n"
 "            "
 msgstr ""
 
 #: templates/zerver/new_user_email_address_visibility.html:18
 msgid "Change"
-msgstr ""
+msgstr "Змяніць"
 
 #: templates/zerver/no_spare_licenses.html:4
 msgid "No licenses available"
@@ -2861,8 +3337,9 @@ msgstr ""
 #: templates/zerver/no_spare_licenses.html:16
 #, python-format
 msgid ""
-"New members cannot currently join %(realm_name)s"
-"a> because all Zulip Cloud licenses are in use."
+"New members cannot currently join %(realm_name)s because all Zulip Cloud licenses "
+"are in use."
 msgstr ""
 
 #: templates/zerver/no_spare_licenses.html:19
@@ -2871,12 +3348,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2885,11 +3358,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2898,11 +3366,8 @@ msgstr ""
 #: templates/zerver/realm_creation_disabled.html:15
 msgid ""
 "\n"
-"                    Creating a new organization on this server requires a "
-"valid organization creation link.\n"
-"                    Please see documentation on "
-"creating a new organization for more information.\n"
+"                    Creating a new organization on this server requires a valid organization creation link.\n"
+"                    Please see documentation on creating a new organization for more information.\n"
 "                    "
 msgstr ""
 
@@ -2928,7 +3393,7 @@ msgstr ""
 #: templates/zerver/realm_creation_form.html:56
 #: templates/zerver/register.html:60
 msgid "Organization URL"
-msgstr ""
+msgstr "URL арганізацыі"
 
 #: templates/zerver/realm_creation_form.html:63
 #, python-format
@@ -2943,9 +3408,7 @@ msgstr ""
 #: templates/zerver/realm_creation_link_invalid.html:16
 msgid ""
 "\n"
-"                        Unfortunately, this is not a valid link for creating "
-"an organization. Please obtain a new link and try "
-"again.\n"
+"                        Unfortunately, this is not a valid link for creating an organization. Please obtain a new link and try again.\n"
 "                        "
 msgstr ""
 
@@ -3047,7 +3510,8 @@ msgstr ""
 
 #: templates/zerver/register.html:154
 msgid ""
-"This is used for mobile applications and other tools that require a password."
+"This is used for mobile applications and other tools that require a "
+"password."
 msgstr ""
 
 #: templates/zerver/register.html:162
@@ -3062,6 +3526,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3140,8 +3620,7 @@ msgstr ""
 msgid ""
 "\n"
 "            To use one of these to log in to Zulip, you must first\n"
-"            verify it with "
-"GitHub.\n"
+"            verify it with GitHub.\n"
 "            "
 msgstr ""
 
@@ -3176,8 +3655,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                    You've successfully unsubscribed from Zulip "
-"%(subscription_type)s emails for\n"
+"                    You've successfully unsubscribed from Zulip %(subscription_type)s emails for\n"
 "                    %(realm_name)s.\n"
 "                    "
 msgstr ""
@@ -3186,10 +3664,8 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                    You can undo this change or review your preferences in "
-"your\n"
-"                    notification settings.\n"
+"                    You can undo this change or review your preferences in your\n"
+"                    notification settings.\n"
 "                    "
 msgstr ""
 
@@ -3210,8 +3686,7 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                        Zulip supports modern browsers\n"
+"                        Zulip supports modern browsers\n"
 "                        like Firefox, Chrome, and Edge.\n"
 "                        "
 msgstr ""
@@ -3220,130 +3695,111 @@ msgstr ""
 #, python-format
 msgid ""
 "\n"
-"                        You can also use the Zulip desktop app.\n"
+"                        You can also use the Zulip desktop app.\n"
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
-"To protect users, Zulip limits the number of invitations you can send in one "
-"day. Because you have reached the limit, no invitations were sent."
+"To protect users, Zulip limits the number of invitations you can send in one"
+" day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3373,72 +3829,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3457,181 +3913,185 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
-"Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
-"that stream does not exist. Click [here]({new_stream_link}) to create it."
+"Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
+" that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
-"Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
-"stream exists but does not have any subscribers."
+"Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
+" stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
-#: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
+#: zerver/actions/scheduled_messages.py:150
+#: zerver/views/scheduled_messages.py:88
+#: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
-"{user} changed the [posting permissions](/help/stream-sending-policy) for "
-"this stream:\n"
+"{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
 "\n"
 "* **Old permissions**: {old_policy}.\n"
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
-"{user} has changed the [message retention period](/help/message-retention-"
-"policy) for this stream:\n"
+"{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
 "* **Old retention period**: {old_retention_period}\n"
 "* **New retention period**: {new_retention_period}\n"
 "\n"
@@ -3642,7 +4102,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3652,187 +4112,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3889,88 +4349,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3978,166 +4438,167 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
-"You only have permission to move the {total_messages_allowed_to_move}/"
-"{total_messages_in_topic} most recent messages in this topic."
+"You only have permission to move the "
+"{total_messages_allowed_to_move}/{total_messages_in_topic} most recent "
+"messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4153,7 +4614,7 @@ msgstr ""
 
 #: zerver/lib/hotspots.py:42
 msgid "Topics"
-msgstr ""
+msgstr "Тэмы"
 
 #: zerver/lib/hotspots.py:44
 msgid ""
@@ -4163,7 +4624,7 @@ msgstr ""
 
 #: zerver/lib/hotspots.py:54
 msgid "Settings"
-msgstr ""
+msgstr "Налады"
 
 #: zerver/lib/hotspots.py:55
 msgid "Go to Settings to configure your notifications and preferences."
@@ -4235,226 +4696,227 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
-"You are not allowed to mention user group '{user_group_name}'. You must be a "
-"member of '{can_mention_group_name}' to mention this group."
+"You are not allowed to mention user group '{user_group_name}'. You must be a"
+" member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
-"If you are new to Zulip, check out our [Using Zulip for a class guide]"
-"({getting_started_url})!"
+"If you are new to Zulip, check out our [Using Zulip for a class "
+"guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
-"If you are new to Zulip, check out our [Getting started guide]"
-"({getting_started_url})!"
+"If you are new to Zulip, check out our [Getting started "
+"guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
-"We also have a guide for [Setting up Zulip for a class]"
-"({organization_setup_url})."
+"We also have a guide for [Setting up Zulip for a "
+"class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
-"We also have a guide for [Setting up your organization]"
-"({organization_setup_url})."
+"We also have a guide for [Setting up your "
+"organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
-"I can also help you get set up! Just click anywhere on this message or press "
-"`r` to reply."
+"I can also help you get set up! Just click anywhere on this message or press"
+" `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
-"You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
-"works great in a browser."
+"You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
+" works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
-"Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
-"change-your-profile-picture) and edit your [profile information](/help/edit-"
-"your-profile)."
+"Go to [Profile settings](#settings/profile) to add a [profile "
+"picture](/help/change-your-profile-picture) and edit your [profile "
+"information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
-"dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
-"and-emoticons#change-your-emoji-set), [change your language](/help/change-"
-"your-language), and make other tweaks to your Zulip experience."
+"dark themes](/help/dark-theme), [pick your favorite emoji "
+"theme](/help/emoji-and-emoticons#change-your-emoji-set), [change your "
+"language](/help/change-your-language), and make other tweaks to your Zulip "
+"experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
-"topics). They are light-weight subjects, very similar to the subject line of "
-"an email."
+"topics). They are light-weight subjects, very similar to the subject line of"
+" an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
-"This is a message on stream #**{default_notification_stream_name}** with the "
-"topic `topic demonstration`."
+"This is a message on stream #**{default_notification_stream_name}** with the"
+" topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
-"You can learn more about topics at [Streams and topics]"
-"({about_topics_help_url})."
+"You can learn more about topics at [Streams and "
+"topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
-"This is a message on stream #**{default_notification_stream_name}** with the "
-"topic `swimming turtles`."
+"This is a message on stream #**{default_notification_stream_name}** with the"
+" topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4468,45 +4930,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4518,23 +4980,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4554,21 +5016,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4605,7 +5067,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4619,7 +5081,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4628,7 +5090,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4660,28 +5122,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4692,18 +5154,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4713,24 +5175,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4740,8 +5202,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4760,21 +5222,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4831,161 +5293,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5019,215 +5481,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4983
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4987
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5027
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5048
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5053
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Прыватная, агульная гісторыя"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Прыватная, абароненая гісторыя"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Мадэратар"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Удзельнік"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Госць"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5240,20 +5698,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5291,41 +5749,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5376,7 +5834,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5425,19 +5883,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5453,42 +5911,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5503,55 +5965,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5585,7 +6047,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5613,71 +6075,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5686,7 +6148,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5710,112 +6172,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5876,43 +6338,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5945,11 +6407,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5968,15 +6430,15 @@ msgstr ""
 
 #: zerver/webhooks/newrelic/view.py:153
 msgid ""
-"The newrelic webhook requires state be in [created|activated|acknowledged|"
-"closed]"
+"The newrelic webhook requires state be in "
+"[created|activated|acknowledged|closed]"
 msgstr ""
 
 #: zerver/webhooks/papertrail/view.py:31
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5993,83 +6455,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
-"Your data export is complete. [View and download exports]"
-"({export_settings_link})."
+"Your data export is complete. [View and download "
+"exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/be/translations.json b/locale/be/translations.json
index 21d2ddb148..a1b518e813 100644
--- a/locale/be/translations.json
+++ b/locale/be/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "",
+  "{N, plural, one {# participant} other {# participants}}": "",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "",
diff --git a/locale/bg/LC_MESSAGES/django.po b/locale/bg/LC_MESSAGES/django.po
index b7c0549a15..749348d30e 100644
--- a/locale/bg/LC_MESSAGES/django.po
+++ b/locale/bg/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Veselin Georgiev , 2018\n"
 "Language-Team: Bulgarian (http://app.transifex.com/zulip/zulip/language/bg/)\n"
@@ -19,57 +19,51 @@ msgstr ""
 "Language: bg\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Няма налични данни за анализ. Моля свържете се с вашия администратор на сървъра."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -78,7 +72,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -87,7 +81,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -114,11 +108,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -134,124 +128,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -259,54 +253,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -315,8 +316,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -421,7 +455,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Потребители"
 
@@ -561,36 +595,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Откажи"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -612,6 +742,451 @@ msgstr "Категории"
 msgid "All"
 msgstr "Всички"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -631,11 +1206,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -650,12 +1221,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Създай организация"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -688,51 +1259,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -748,14 +1316,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -803,7 +1363,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Регистрация"
 
@@ -836,8 +1396,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Вход"
 
@@ -870,26 +1430,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Опитай сега."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1112,21 +1668,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "Нормални потребители"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Затвори"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Обнови"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2349,7 +2905,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2369,7 +2925,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2379,12 +2944,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Намери акаунти"
 
@@ -2416,7 +2981,7 @@ msgstr "Интеграция"
 msgid "Desktop & mobile apps"
 msgstr "Десктоп и мобилни приложения"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Нова организация"
 
@@ -2784,12 +3349,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2798,11 +3359,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2971,6 +3527,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Възстновете паролата си"
@@ -3128,123 +3700,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3274,72 +3830,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3358,137 +3914,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3497,38 +4058,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3542,7 +4103,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3552,187 +4113,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3789,88 +4350,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3878,119 +4439,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3998,47 +4559,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4136,106 +4697,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4244,119 +4805,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4370,45 +4931,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4420,23 +4981,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4456,21 +5017,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4507,7 +5068,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4521,7 +5082,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4530,7 +5091,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4562,28 +5123,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4594,18 +5155,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4615,24 +5176,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4642,8 +5203,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4662,21 +5223,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4733,161 +5294,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4921,215 +5482,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Само администратори"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Потребител"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Гост"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Публичен"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Публичен"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Само администратори"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Потребител"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Гост"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5142,20 +5699,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5193,41 +5750,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5278,7 +5835,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5327,19 +5884,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5355,42 +5912,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5405,55 +5966,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5487,7 +6048,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5515,71 +6076,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5588,7 +6149,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5612,112 +6173,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5778,43 +6339,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5847,11 +6408,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5878,7 +6439,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5895,83 +6456,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/bg/translations.json b/locale/bg/translations.json
index fe357e711e..f482728cba 100644
--- a/locale/bg/translations.json
+++ b/locale/bg/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(няма тема)",
   "(or )": "",
   "(you)": "(Вие)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 ден",
   "1 hour": "1 час",
   "1 week": "1 седмица",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Добави",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "Добавяне на нова дума за предупреждение",
   "Add a new bot": "Добави нов бот",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "Ботове",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "Копирай линк",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "Изтегли",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "Изтегли файл",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Ефект",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Маркирай като прочетени",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Споменавания",
   "Menus": "Менюта",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Действия със съобщения",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Следваща непрочетена тема",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Търси хора",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Вижте как да конфигурирате е-поща.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "Регистрация",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "Днес",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "Активирай меню инструменти",
   "Toggle topic mute": "Активирай подтискане на темата",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip трябва да изпрати съобщение чрез е-поща за потвърждение на адреса и изпращане на предупреждения.",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/bqi/LC_MESSAGES/django.po b/locale/bqi/LC_MESSAGES/django.po
index 5fa6e10a9f..7451ba3351 100644
--- a/locale/bqi/LC_MESSAGES/django.po
+++ b/locale/bqi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: hosêyň abāspanā , 2023\n"
 "Language-Team: Luri (Bakhtiari) (http://app.transifex.com/zulip/zulip/language/bqi/)\n"
@@ -18,57 +18,51 @@ msgstr ""
 "Language: bqi\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "jaryānā poy volâti"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "jaryānā sixomi"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -77,7 +71,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -86,7 +80,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -95,7 +89,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -104,7 +98,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -113,11 +107,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -133,124 +127,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -258,54 +252,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "xatā"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -314,8 +315,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "xatā mêni,mên sêrvêr"
 
@@ -420,7 +454,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "mêntorā"
 
@@ -560,36 +594,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "raď kerdên"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -611,6 +741,451 @@ msgstr "kêtên kerdêyal"
 msgid "All"
 msgstr "poy"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -630,11 +1205,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -649,12 +1220,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "vorkêlê sāzêmow"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -687,51 +1258,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -747,14 +1315,6 @@ msgstr "āvātār"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -802,7 +1362,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "sabtê nom"
 
@@ -835,8 +1395,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "avoďên"
 
@@ -869,26 +1429,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "him sako tafre raw."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1111,21 +1667,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "mêntorā ma'muli"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "bastên"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2348,7 +2904,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2368,7 +2924,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2378,12 +2943,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "ādrês imêyl"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "jostên hêsāvā mêntori"
 
@@ -2415,7 +2980,7 @@ msgstr "ya jur kerdênā"
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "sāzêmowê nu"
 
@@ -2783,12 +3348,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2797,11 +3358,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2970,6 +3526,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3127,123 +3699,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "fildê nomê mêntori {id} nê najost."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3273,72 +3829,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "sāzêmov isā,ālêštê payum nê bîkênêš kerde"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "isā  dasrasi si ālêštê i payumê nê nađârin"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "sāzêmov isā,ālêštê payum nê bîkênêš kerde"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "isā  dasrasi si ālêštê i payumê nê nađârin"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3357,137 +3913,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "payom (ā) nazêbāl"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3496,38 +4057,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3541,7 +4102,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3551,187 +4112,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "dasrasi kâfi nađārin"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "razmê nu"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "sartālî nî"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "jaryānî nî"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "no'ê payom zêbāl nî"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3788,88 +4349,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "ādrês zêbāl nî."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "dar zê dāmanê isā hêď."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "zê zitar ya hêsāv mêntori dāre."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3877,119 +4438,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "jaryānê '{stream}' ê nê nîď"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "mêntor"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON êštêvā"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "kilitê API êštêvā"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "dasrasi ma'dud"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3997,47 +4558,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4135,106 +4696,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "payum navā pati bu"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4243,119 +4804,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4369,45 +4930,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "nêšovêi nî"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4419,23 +4980,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4455,21 +5016,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4506,7 +5067,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4520,7 +5081,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4529,7 +5090,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4561,28 +5122,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4593,18 +5154,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4614,24 +5175,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4641,8 +5202,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4661,21 +5222,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4732,161 +5293,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "nom qalêve tulâni hêď!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "nom qalêve kutāl hêď!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "činow robāti nî"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "činow mêntori nî"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4920,215 +5481,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "dîvowdārê sāzêmow"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "mêntor"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "mîmow"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "poy volâti"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "êmuji sêfârêši"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "ling"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "êmuji sêfârêši"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "poy volâti"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "dîvowdārê sāzêmow"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "mêntor"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "mîmow"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5141,20 +5698,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5192,41 +5749,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5277,7 +5834,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5326,19 +5883,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "fêšnāko pati hêď"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5354,42 +5911,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5404,55 +5965,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5486,7 +6047,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5514,71 +6075,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "jaryānā nu"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5587,7 +6148,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5611,112 +6172,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "razm zêbāl nî!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5777,43 +6338,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5846,11 +6407,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "sartāl natare pati bu"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5877,7 +6438,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5894,83 +6455,105 @@ msgstr "payum zê êslak"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP êštêvā hêď"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/bqi/translations.json b/locale/bqi/translations.json
index c3717d63b1..46b567632a 100644
--- a/locale/bqi/translations.json
+++ b/locale/bqi/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "avordên",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "robāt",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "robātā",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "dānlodê fāyl",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "imêyl",
   "Email address": "ādrês imêyl",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "šîvāt",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "nu",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "imêylê nu",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "bî pîš hîl",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "hičkoyêksow",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "dovāre bêfêšn",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "vorgandên pîš hîl",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "sabtê nom",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "amru",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/ca/LC_MESSAGES/django.po b/locale/ca/LC_MESSAGES/django.po
index 4f95a0f28d..9ca13168bf 100644
--- a/locale/ca/LC_MESSAGES/django.po
+++ b/locale/ca/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Gonçal Garcés, 2020-2021\n"
 "Language-Team: Catalan (http://app.transifex.com/zulip/zulip/language/ca/)\n"
@@ -20,57 +20,51 @@ msgstr ""
 "Language: ca\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "No permès per a usuaris convidats"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organització no vàlida"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Canals públics"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Canals privats"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Sense dades d'analytics. Parleu amb l'administrador."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -79,7 +73,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -88,7 +82,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -97,7 +91,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -106,7 +100,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -115,11 +109,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -135,124 +129,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Alguna cosa ha fallat. Recarregueu la pàgina."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Alguna cosa ha fallat. Espereu uns segons i torneu a provar-ho."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -260,54 +254,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Error"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -316,8 +317,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Error intern del servidor"
 
@@ -422,7 +456,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Usuaris"
 
@@ -562,36 +596,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Cancel·la"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -613,6 +743,451 @@ msgstr ""
 msgid "All"
 msgstr "Tots"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -632,11 +1207,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -651,12 +1222,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Crea una organització"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -689,51 +1260,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contacta amb l'equip de suport"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Missatge"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -749,14 +1317,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -804,7 +1364,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Crea un compte"
 
@@ -837,8 +1397,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Inicia la sessió"
 
@@ -871,26 +1431,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Missatges"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1113,21 +1669,21 @@ msgstr "Usuaris convidats"
 msgid "Normal users"
 msgstr "Usuaris normals"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Tancar"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Actualitza"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2350,7 +2906,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2370,7 +2926,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2380,12 +2945,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Cerca comptes"
 
@@ -2417,7 +2982,7 @@ msgstr "Integracions"
 msgid "Desktop & mobile apps"
 msgstr "Aplicacions d'escriptori i mòbils"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nova organització"
 
@@ -2785,12 +3350,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2799,11 +3360,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2972,6 +3528,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Restableix la contrasenya"
@@ -3129,123 +3701,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3275,72 +3831,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3359,137 +3915,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3498,38 +4059,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3543,7 +4104,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3553,187 +4114,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Fitxer adjunt no vàlid"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "S'ha produït un error a l'adjuntar el fitxer. Torneu a intentar-ho més tard."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3790,88 +4351,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Adreça no vàlida."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3879,119 +4440,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "propietari d'organització"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Clau d'API no vàlida"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Clau d'API malformada"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3999,47 +4560,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4137,106 +4698,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Operador de filtratge no vàlid: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Hola, i benvingut/uda a Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4245,119 +4806,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4371,45 +4932,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4421,23 +4982,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4457,21 +5018,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4508,7 +5069,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4522,7 +5083,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4531,7 +5092,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4563,28 +5124,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4595,18 +5156,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4616,24 +5177,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4643,8 +5204,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4663,21 +5224,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4734,161 +5295,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4922,215 +5483,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Propietari d'organització"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administrador d'organització"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Membre"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Convidat"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Públic"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emojis personalitzats"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Enllaç"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emojis personalitzats"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Públic"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Propietari d'organització"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administrador d'organització"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Membre"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Convidat"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5143,20 +5700,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5194,41 +5751,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "El camp personalitzat predeterminat no es pot actualitzar."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5279,7 +5836,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5328,19 +5885,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5356,42 +5913,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5406,55 +5967,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5488,7 +6049,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5516,71 +6077,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "canals nous"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5589,7 +6150,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5613,112 +6174,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "default_language no vàlida"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "El tema no està silenciat"
 
@@ -5779,43 +6340,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5848,11 +6409,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5879,7 +6440,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5896,83 +6457,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/ca/translations.json b/locale/ca/translations.json
index abda04619a..bfc84087db 100644
--- a/locale/ca/translations.json
+++ b/locale/ca/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(sense tema)",
   "(or )": "",
   "(you)": "(tu)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "/me està excitat (Mostrar text d'acció)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll On hauriem d'anar a dinar? (Crear enquesta)",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dia",
   "1 hour": "1 hora",
   "1 week": "1 setmana",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Afegeix",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "Afegeix una alerta nova",
   "Add a new bot": "Afegeix un bot nou",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Elimina l'esborrany",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "Descarregar arxiu",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efecte",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Correu electrònic",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "Març",
   "Mark all messages as read": "Marca tots els missatges com a llegits",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Marca com a llegit",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Mencions",
   "Menus": "Menús",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Accions de missatge",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "Missatges",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "Missatge nou",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Següent tema no llegit",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "No hi ha esborranys",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "No hi ha cap invitació que s'ajuste al filtre actiu.",
   "No language set": "No s'ha establit una llengua",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "Altres paràmetres",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Recupera l'esborrany",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Cerca persones",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "Selecciona un canal",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Mostra el nombre de missatges destacats",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Mostra/modifica la meva clau API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Crea un compte",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "Avui",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Commuta la subscripció",
   "Toggle the gear menu": "Mostra/amaga el menú d'eines",
   "Toggle topic mute": "Silencia/no silencies el tema",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "més temes",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/cs/LC_MESSAGES/django.po b/locale/cs/LC_MESSAGES/django.po
index f0f7b50e58..c166704004 100644
--- a/locale/cs/LC_MESSAGES/django.po
+++ b/locale/cs/LC_MESSAGES/django.po
@@ -4,7 +4,7 @@
 # 
 # Translators:
 # Filip Mezera , 2019
-# Filip Vařecha , 2019,2021
+# Filip Vařecha , 2019,2021
 # Greg Price , 2017
 # Jiří Ryszawy , 2021
 # fri, 2017
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: fri, 2017-2023\n"
 "Language-Team: Czech (http://app.transifex.com/zulip/zulip/language/cs/)\n"
@@ -24,57 +24,51 @@ msgstr ""
 "Language: cs\n"
 "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Není povoleno pro hosty"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Neplatná organizace"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Veřejné kanály"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Soukromé kanály"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Přímé zprávy"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Seskupit přímé zprávy"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Chybějící datový tok pro graf:: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Neznámý název grafu: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Čas začátku je později než čas konce. Začátek: {start}, konec: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Žádná analytická data nejsou k dispozici. Spojte se, prosím, se správcem serveru."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Neplatné parametry"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -83,7 +77,7 @@ msgid ""
 "users to join."
 msgstr "Vaše organizace nemá již žádné zbývající Zulip licence a nemůže proto příjmat nové uživatele. Pokud chcete zapojit další uživatele, [navyšte počet vašich licencí]({billing_page_link}) nebo [deaktivujte neaktivní uživatele]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -92,7 +86,7 @@ msgid ""
 "join."
 msgstr "Vaší organizaci zbývá již jen poslední Zulip licence. Pokud chcete umožnit dalším uživatelům se zapojit, [navyšte počet vašich licencí]({billing_page_link}) nebo [deaktivujte neaktivní uživatele]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -101,7 +95,7 @@ msgid ""
 "join."
 msgstr "Vaší organizaci zbývají již jen poslední dvě Zulip licence. Pokud chcete umožnit dalším uživatelům se zapojit, [navyšte počet vašich licencí]({billing_page_link}) nebo [deaktivujte neaktivní uživatele]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -110,7 +104,7 @@ msgid ""
 "join."
 msgstr "Vaší organizaci zbývá již jen poslední tři Zulip licence. Pokud chcete umožnit dalším uživatelům se zapojit, [navyšte počet vašich licencí]({billing_page_link}) nebo [deaktivujte neaktivní uživatele]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -119,11 +113,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Nový uživatel ({email}) se nemohl zapojit do vaší organizace, protože všechny vaše Zulip licence jsou již využívány. Pokud chcete umožnit dalším uživatelům se zapojit,  [navyšte počet vašich licencí]({billing_page_link}) nebo [deaktivujte neaktivní uživatele]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Všechny Zulip licence pro tuto organizaci jsou v současnosti využívány."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -133,130 +127,130 @@ msgstr "Vaše organizace nemá dostatečný počet volných Zulip licencí pro p
 #: corporate/lib/remote_billing_util.py:133
 #: corporate/lib/remote_billing_util.py:169
 msgid "Registration is deactivated"
-msgstr ""
+msgstr "Registrace je vypnuta"
 
 #: corporate/lib/remote_billing_util.py:166
 msgid "Invalid remote server."
-msgstr ""
+msgstr "Neplatný vzdálený server."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Musíte zakoupit licence pro všechny činné uživatele ve vaší organizaci (minimum {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Účty s více než {max_licenses} licencemi nelze zpracovat z této stránky. Pro dokončení povýšení se, prosím, spojte s {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Žádná platební metoda v záznamu."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} končí za {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Neznámá platební metoda. Spojte se, prosím, s {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Nastala chyba. Spojte se, prosím, s {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Něco se nepodařilo. Načtěte prosím stránku znovu."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Něco se nepodařilo. Počkejte prosím několik sekund a zkuste to znovu."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
-msgstr ""
+msgstr "Před zahájením bezplatné zkušební verze přidejte kreditní kartu."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
-msgstr ""
+msgstr "Pro naplánování aktualizace přidejte prosím kreditní kartu."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Aktualizace platebního plánu se nezdařila. Plán již vypršel a byl nahrazen novým."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Aktualizace platebního plánu se nezdařila. Plán již byl ukončen."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
-msgstr ""
+msgstr "Nelze aktualizovat licence v aktuálním zúčtovacím období pro bezplatný zkušební plán."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Ruční aktualizace licencí se nezdařila. Váš platební plán má nastavenu automatickou správu licencí."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Váš aktuální platební plán již využívá {licenses} licencí v aktuálním zúčtovacím období."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Nelze snížit počet licencí v aktuálním zúčtovacím období."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
-msgstr ""
+msgstr "Nelze změnit licence pro příští zúčtovací cyklus u plánu, který je ponižován."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Váš platební plán je již nastaven aby v dalším zúčtovacím období obnovil {licenses_at_next_renewal} licencí."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Není co měnit."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Pro tuto organizaci neexistuje žádný zákazník!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Relace nebyla nalezena"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Musí být správcem plateb nebo vlastníkem organizace"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Záměr platby nenalezen"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Vložte stripe_session_id nebo stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -264,54 +258,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Žádost vaší organizace o sponzorovaný hosting byla schválena! Byli jste bezplatně převedeni na {plan_name}. {emoji}\n\nPokud byste mohli {begin_link} uvést společnost Zulip jako sponzora na svých webových stránkách{end_link}, budeme vám velmi vděčni!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
-msgstr ""
+msgstr "Parametr 'confirmed' je povinný"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
-msgstr ""
+msgstr "Platnost přístupového dokladu pro fakturaci vypršela."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
+msgstr "Neplatný fakturační přístupový doklad."
+
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
-msgstr ""
+msgstr "Uživatelský účet zatím neexistuje."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
-msgstr ""
+msgstr "Chcete-li pokračovat, musíte souhlasit s podmínkami služby."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
-msgstr ""
+msgstr "Toto zulip_org_id není registrováno v systému správy účtů společnosti Zulip."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
-msgstr ""
+msgstr "Neplatný zulip_org_key pro toto zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
-msgstr ""
+msgstr "Registrace vašeho serveru byla vypnuta."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Neplatné parametry"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Chyba"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Metoda není povolena (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Stránka nebyla nalezena (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -320,8 +321,41 @@ msgid ""
 "                        "
 msgstr "\n                        Pokud je tato chyba neočekávaná, můžete\n                        se spojit s podporou.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Metoda není povolena (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Vnitřní chyba serveru"
 
@@ -426,7 +460,7 @@ msgstr "Aktivní v posledních 15 dnech"
 msgid "Total users"
 msgstr "Celkem uživatelů"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Uživatelé"
 
@@ -566,37 +600,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Ujistěte se, že jste odkaz správně zkopírovali do svého prohlížeče. Pokud se s touto stránkou stále setkáváte, je to pravděpodobně naše chyba. Omlouváme se."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Fakturace"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Zavřít okno"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Nevadí."
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Ponížit"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Zrušit"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Ponížit"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Potvrdit"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Nevadí."
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr "Zrušit povýšení"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Stav vyúčtování"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Vypnout registraci serveru?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr "Správa plánu není dostupná"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Překročen mez rychlosti."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Můžete to zkusit znovu za %(retry_after)s sekund."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Povýšit"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Před povýšením převeďte ukázkovou organizaci."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -617,6 +747,451 @@ msgstr "Kategorie"
 msgid "All"
 msgstr "Vše"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr "Neomezeno"
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr "Podporováno"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr "Vlastní správa"
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr "Pro organizace s až 10 uživateli"
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr "Nedostupné"
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Vývojářská komunita Zulipu"
@@ -636,11 +1211,7 @@ msgstr "Zapojit se jako provozovatel na vlastní infrastruktuře"
 msgid "Join as a contributor"
 msgstr "Zapojit se jako přispěvatel"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Stav vyúčtování"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -655,12 +1226,12 @@ msgstr "Stav vyúčtování"
 msgid "Create organization"
 msgstr "Vytvořit organizaci"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Ceník a plány"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -693,51 +1264,48 @@ msgstr "Ceny za vzdělávání"
 msgid "View pricing"
 msgstr "Zobrazit ceny"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip pro podnikání"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Spojit se s podporou"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Od"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organizace"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Předmět"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Zpráva"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Odeslat"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Děkujeme, že jste se na nás obrátili"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Děkujeme, že jste se na nás obrátili!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Brzy se vám ozveme."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -753,14 +1321,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Vyzkoušejte Zulip hned teď"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Povýšit"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Před povýšením převeďte ukázkovou organizaci."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -808,7 +1368,7 @@ msgstr "Pokračovat"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Zaregistrovat se"
 
@@ -841,8 +1401,8 @@ msgstr "Již máte účet."
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Přihlásit se"
 
@@ -875,26 +1435,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Nelze se připojit k Zulipu."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Aktualizace mohou být zpožděny."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Brzy to zkusíme znovu..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Zkuste to nyní."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Zprávy"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Chyba subdomény pro ověřování"
@@ -1117,21 +1673,21 @@ msgstr "Hosté"
 msgid "Normal users"
 msgstr "Normální uživatelé"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Zavřít"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Obnovit"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2354,7 +2910,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2374,7 +2930,16 @@ msgid ""
 "                    "
 msgstr "\n                    Elektronické zprávy odeslány! E-maily budete dostávat pouze\n                     na adresy spojené s organizacemi Zulip. Adresy zadané\n                    na předchozí stránce jsou uvedeny níže:\n                    "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2384,12 +2949,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "E-mailová adresa"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Najít účty"
 
@@ -2421,7 +2986,7 @@ msgstr "Doplňky"
 msgid "Desktop & mobile apps"
 msgstr "Aplikace pro počítače a telefony"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nová organizace"
 
@@ -2789,25 +3354,16 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Překročen mez rychlosti."
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "Překročil jste hranici, jak\n  často tuto činnost může uživatel provést."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Můžete to zkusit znovu za %(retry_after)s sekund."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2976,6 +3532,22 @@ msgstr "O co se zajímáte?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Přihlašte se k odběru občasného zpravodaje Zulip (několik e-mailů ročně)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Nastavit heslo znovu"
@@ -3133,123 +3705,107 @@ msgid ""
 "                        "
 msgstr "\n                        Také můžete použít program pro plochu Zulip.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "přihlášení"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} se právě přihlásil k Zulipu. (celkem: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} přijal vaše pozvání, aby se připojil k Zulipu!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Chybný \"mapping\" pořadí."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Pole s id {id} nebylo nalezeno."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' je výchozí kanál a nelze ho přidat do '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Výchozí skupina kanálu '{group_name}' již existuje"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Kanál '{stream_name}' je již ve výchozí skupině kanálu přítomen '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Kanál '{stream_name}' není ve výchozí skupině kanálu přítomen '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Kvůli ochraně uživatelů omezuje Zulip počet pozvánek, které můžete poslat za jeden den. Protože jste dosáhli meze, nebyly odeslány žádné pozvánky."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Váš účet je zatím příliš čerstvý a odesílání pozvánek jménem této organizace vám pro tuto chvíli není povoleno. Poproste správce organizace, nebo nějakého zkušenějšího uživatele."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Platnost některých e-mailů se nepodařilo ověřit a proto jsme raději žádné pozvánky neposlali."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Nepodařilo se nám pozvat nikoho."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3279,72 +3835,72 @@ msgstr "Nelze měnit obsah zprávy během změny kanálu"
 msgid "Widgets cannot be edited."
 msgstr "Grafické součásti nelze upravovat."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Vaše organizace vypnula upravy zpráv"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Nemáte oprávnění k upravení této zprávy"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Časová lhůta pro upravení této zprávy vypršela"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} označil toto téma jako vyřešené."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} označil toto téma jako nevyřešené."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Toto téma sem bylo přesunuto {user} do {new_location}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Zpráva byla {user} přesunuta z tohoto tématu do {new_location}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} zpráv bylo {user} přesunuto z tohoto tématu do {new_location}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Toto téma sem bylo přesunuto {user} z {old_location}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} zpráv sem bylo {user} přesunuto z {old_location}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Vaše organizace vypnula upravy zpráv"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Nemáte oprávnění k upravení této zprávy"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Časová lhůta pro upravení této zprávy vypršela"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Nemáte oprávnění k přesunutí této zprávy"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3363,137 +3919,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Neplatná zpráva/y"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Nelze zpracovat zprávu"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Očekáván přesně jeden kanál"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Neplatný datový typ pro kanál"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Neplatný datový typ pro příjemce"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Seznamy příjemců mohou obsahovat adresy nebo uživatelská ID, ale ne obojí."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Robot {bot_identity} se pokusil poslat zprávu kanálu s ID {stream_id}, ale žádný takový kanál neexistuje."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Robot {bot_identity} se pokusil poslat zprávu kanálu {stream_name}, ale tento kanál neexistuje. Klepněte [zde]({new_stream_link}) pro jeho vytvoření."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Robot {bot_identity} se pokusil poslat zprávu kanálu {stream_name}. ento kanál existuje. Nemá však žádné odběratele."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Přímé zprávy jsou v této organizaci zakázány."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Témata jsou v této organizaci povinná"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "\"Widgety\": programátor API odeslal neplatný JSON"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Součástky: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Vlastní obrázeček s tímto názvem již existuje."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} změnil [přístupová oprávnění](/help/stream-permissions) k tomuto kanálu z **{old_policy}** na **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3502,38 +4063,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} změnil [odesílací oprávnění](/help/stream-sending-policy) pro tento kanál:\n\n* **Stará oprávnění**: {old_policy}.\n* **Nová oprávnění**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} přejmenoval/a kanál {old_stream_name} na {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Žádný popis."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} změnil popis tohoto kanálu."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Starý popis."
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Nový popis"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Navždy"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Zprávy v tomto kanálu nyní budou uchovány navždy."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3547,7 +4108,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr "K této zprávě nelze připojit dílčí zprávu."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3557,187 +4118,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Toto API není dostupné pro roboty využívající příchozí \"webhooky\"."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Účet není spojen s subdoménou"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Tento \"endpoint\" nepřijímá požadavky robotů."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Musí být správce serveru"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Nedostatečná oprávnění"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Tento \"endpoint\" vyžaduje HTTP základní autentizaci."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Neplatná autorizační hlavička pro \"basic auth\""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Chybějící autorizační hlavička pro \"basic auth\""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "\"Webhook\" roboti můžou používat pouze \"webhooky\""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Váš účet {username} byl vypnut. Chcete-li jej znovu zapnout, spojte se se správcem své organizace."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Heslo je příliš slabé"
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomény musí mít délku 3 nebo větší."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomény nemohou začínat nebo končit na '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdoména může obsahovat jen malá písmena, čísla a  '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Použijte prosím váš skutečný e-mail."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Organizace, ke které se pokoušíte pomocí {email} připojit, neexistuje."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Vyžádejte si, prosím, pozvánku pro {email} od správce organizace."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Váš e-mail {email} není součástí ani jedné domény, které jsou pro tuto organizaci povoleny."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "E-mailové adresy obsahující + nejsou pro tuto organizaci povoleny."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Noví členové se nemohou připojit k této organizaci, protože všechny licence Zulip jsou používány. Spojte se, prosím, s osobou, která\nvás pozvala, a požádejte ji, aby zvýšila počet licencí, pak to zkuste znovu.\n    "
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nové heslo"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Potvrzení nového hesla"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Vaše heslo bylo vypnuto, protože je příliš slabé. Chcete-li vytvořit nové, zadejte své heslo znovu."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Elektronický klíč"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Zadejte prosím maximálně 10 e-mailů."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Tuhle organizaci se nám na Zulipu nepodařilo najít."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Chybějící téma"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Nelze poslat na více kanálů"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Chybí kanál"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Zpráva musí mít příjemce"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Neplatný typ zprávy"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Neplatná příloha"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Při mazání přílohy se vyskytla chyba. Zkuste to, prosím, znovu."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Zpráva musí mít příjemce!"
 
@@ -3794,88 +4355,88 @@ msgstr "Uživatel vypnul synchronizaci konceptů."
 msgid "Draft does not exist"
 msgstr "Návrh neexistuje"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Otevřít Zulip a nechat si vyzradit obsah"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Neplatná adresa."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Mimo vaši doménu."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "E-mailové adresy obsahující + nejsou povoleny."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Vyhrazeno pro systémové roboty."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} již má účet"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Již má účet."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Účet byl vypnut."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Neplatný vlastní obrázeček."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Neplatný název vlastního obrázečku."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Tento vlastní obrázeček byl vypnut."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Neplatný kód obrázečku."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Neplatný název obrázečku."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Neplatný typ obrázečku."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Musí být správcem organizace nebo tvůrcem obrázečku"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Chybí název obrázečku"
 
@@ -3883,119 +4444,119 @@ msgstr "Chybí název obrázečku"
 msgid "Could not allocate event queue"
 msgstr "Nepodařilo se přidělit event queue"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Nepřihlášen: API autentikace nebo uživatelská session je vyžadována"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Kanál '{stream}' neexistuje"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Kanál s ID '{stream_id}' neexistuje"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "Vlastník organizace"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "uživatel"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Nelze vypnout jedinou {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Neplatný markdownový include: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Používání API překročilo rychlostní omezení"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Nevalidní JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Musí být členem organizace"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Musí být správcem organizace"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Musí být vlastníkem organizace"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Vaše uživatelské jméno nebo heslo není správné"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Účet je vypnut"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Tato organizace byla vypnuta"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Registrace oznámení po telefonu pro váš server byla vypnuta"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Přihlašování pomocí hesla je v této organizaci vypnuto"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Vaše heslo bylo vypnuto a je třeba je zadat znovu"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Neplatný API klíč"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Špatný API klíč"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Požadavek nelze zpracovat: Vytvořil {webhook_name} tuto událost?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Neplatná subdoména"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Přístup odepřen"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4003,47 +4564,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reakce již existuje."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Odpověď neexistuje."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Vlastní vnější účet musí vymezit vzor adresy, URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Neplatný vnější typ účtu"
 
@@ -4141,106 +4702,106 @@ msgstr "Produktivita"
 msgid "Version control"
 msgstr "Verzování"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Zpráva nesmí být prázdná"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Zpráva nesmí obsahovat nulové bajty"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Neplatný zužující operátor: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Chybí argument 'anchor'"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Neplatná kotva"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Ahoj, vítejte v Zulipu!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Zde je několik zpráv, co chápu:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4249,119 +4810,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "V Zulipu kanály [určují, kdo dostane zprávu](/help/streams-and-topics). Jsou podobné kanálům v jiných aplikacích poskytujících možnost hovoru."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Toto je soukromý kanál, jak ukazuje obrázek zámku vedle názvu kanálu."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Soukromé kanály jsou viditelné jen pro členy kanálů."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Kvůli správě tohoto kanálu jděte do [nastavení kanálu]({stream_settings_url}) a klepněte na `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Toto je zpráva na kanálu #**{default_notification_stream_name}** s tématem `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Témata jsou snadným nástrojem pro udržení pořádku v rozhovorech."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "O tématech se více dozvíte v [kanály a témata]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Toto je zpráva na kanálu #**{default_notification_stream_name}** s tématem `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Neplatný JSON v odpovědi"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Neplatný formát odpovědi"
 
@@ -4375,45 +4936,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Elektronický klíč neexistuje"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Tato organizace zakázala zahrnutí obsahu zpráv do oznámení po telefonu"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} označil/a @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} vás zmínil:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} zmínil všechny:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4425,23 +4986,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Uživatel není oprávněn položit tento dotaz"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' už Zulip nepoužívá."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4461,21 +5022,21 @@ msgstr "Chybí argument '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Špatná hodnota pro '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Poškozené užitečné zatížení"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4512,7 +5073,7 @@ msgstr "Zvolte, prosím, jedno z: 'stream' nebo 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Neplatné ID kanálu"
 
@@ -4526,7 +5087,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4535,7 +5096,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Internetové veřejné kanály nejsou povoleny."
 
@@ -4567,28 +5128,28 @@ msgstr "Téma nemůže být prázdné!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Údaje o odběrech nejsou pro tento kanál dostupné"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Nepodařilo se získat odběratele soukromého kanálu"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} není boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} není datum"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} není slovník"
@@ -4599,18 +5160,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} není číslo s desetinnou čárkou"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} je moc malý"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} není celé číslo"
@@ -4620,24 +5181,24 @@ msgstr "{var_name} není celé číslo"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} je moc velký"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} není seznam"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Neplatný {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} je příliš dlouhé (maximálně {max_length} znaků)"
@@ -4647,8 +5208,8 @@ msgstr "{var_name} je příliš dlouhé (maximálně {max_length} znaků)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} není řetězec"
@@ -4667,21 +5228,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Nahrání souboru by překročilo kvótu, kterou má vaše organizace nastavenou."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Nelze dekódovat obrázek; opravdu jste nahráli soubor s obrázkem?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Obrázek překračuje dovolené limity."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Poškozený animovaný obrázek."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Neznámý formát animovaného obrázku."
 
@@ -4738,161 +5299,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Název je příliš dlouhý!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Název je příliš krátký!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Neplatné znaky v názvu!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Neplatný formát!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Tento název je již používán!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Špatný název nebo uživatelské jméno"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "Neplatný doplněk '{integration_name}'."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Neplatné nastavení!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Neplatný typ robota"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Neplatný typ rozhraní"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Žádný takový robot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Žádný takový uživatel"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Uživatel je vypnut"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} nemůže být prázdné."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} má nesprávnou délku {length}; mělo by být {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} není platný hex kód barvy"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} má mít přesně {length} položek"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} klíč chybí v {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} není allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} je chybná)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} není adresa (URL)"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' nemůže být prázdné."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' je neplatná možnost pro pole '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} není řetězec nebo seznam celých čísel"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} není řetězec nebo celé číslo"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} nemá délku"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} chybí"
@@ -4926,215 +5487,211 @@ msgstr "Chyba CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "Události kanálu"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Dostupné v serveru Zulip Standard. Pro přístup povyšte."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "Doplněk GIPHY zakázán"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Neplatné znaky v názvu obrázečku"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Neznámá chyba regulárního výrazu"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Neplatné znaky v jazyce segmentů"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Správci, moderátoři, členové a hosté"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Správci, moderátoři a členové"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Správci a moderátoři"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Pouze správci"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nikdo"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Neznámý uživatel"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Vlastník organizace"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Správce organizace"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderátor"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Člen"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Host"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Internetový veřejný"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Veřejné"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Soukromá, sdílená historie"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Soukromá, chráněná historie"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Veřejná, chráněná historie"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Všichni členové kanálu mohou přidávat zprávy"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Pouze správci organizace mohou přidávat zprávy"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Zprávy mohou přidávat pouze správci a moderátoři organizace."
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Pouze členové organizace mohou přidávat zprávy."
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode obrázeček"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Vlastní obrázeček"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Další obrázeček Zulipu"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Seznam možností"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Výběr osoby"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Krátký text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Dlouhý text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Datum"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Výběr data"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Odkaz"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Vnější účet"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Zájmena"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Neznámá chyba regulárního výrazu"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode obrázeček"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Vlastní obrázeček"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Další obrázeček Zulipu"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Neplatné znaky v názvu obrázečku"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Neplatné znaky v jazyce segmentů"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "Události kanálu"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Dostupné v serveru Zulip Standard. Pro přístup povyšte."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "Doplněk GIPHY zakázán"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Internetový veřejný"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Veřejné"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Soukromá, sdílená historie"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Soukromá, chráněná historie"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Veřejná, chráněná historie"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Všichni členové kanálu mohou přidávat zprávy"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Pouze správci organizace mohou přidávat zprávy"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Zprávy mohou přidávat pouze správci a moderátoři organizace."
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Pouze členové organizace mohou přidávat zprávy."
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Správci, moderátoři, členové a hosté"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Správci, moderátoři a členové"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Správci a moderátoři"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Pouze správci"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nikdo"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Neznámý uživatel"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Vlastník organizace"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Správce organizace"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderátor"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Člen"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Host"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Neznámá IP adresa"
@@ -5147,20 +5704,20 @@ msgstr "neznámý operační systém"
 msgid "An unknown browser"
 msgstr "Neznámý prohlížeč"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Chybí argument 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Chybí argument 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Událost novější než {event_id} již byla ořezána!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Událost {event_id} nebyla v této řadě"
@@ -5198,41 +5755,41 @@ msgstr "Heslo je nesprávné."
 msgid "User-Agent header missing from request"
 msgstr "V požadavku chybí hlavička uživatelského agenta (User-Agent)"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Štítek nemůže být prázdný."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Políčko musí mít aspoň jednu možnost."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Neplatný typ pole."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "V přehledu profilu lze zobrazit pouze 2 vlastní profilová pole."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Pole s tímto štítkem již existuje."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Výchozí uživatelské pole nelze aktualizovat."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Koncový bod není v produkci dostupný."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "Vývojářská autentizační podpůrná vrstva není zapnuta."
 
@@ -5283,7 +5840,7 @@ msgstr "Musíte zadat alespoň jednu adresu elektronické pošty."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5332,19 +5889,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Chybí odesílatel"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Zrcadlení není povoleno společně s uživatelskými ID příjemců"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Neplatná zrcadlená zpráva"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zrcadlení Zephyru není v této organizaci povoleno."
 
@@ -5360,42 +5917,46 @@ msgstr "Uživatel již ztlumen"
 msgid "User is not muted"
 msgstr "Uživatel není ztlumen"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Zobrazení přítomnosti není podporováno pro robotické uživatele."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Žádné údaje o přítomnosti pro {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Klient neposlal žádné nové hodnoty."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Klient musí předat emoji_name, pokud předají buď emoji_code , nebo reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Prázdný, nebo nesprávně dlouhý elektronický klíč"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Neplatný elektronický klíč APNS"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5410,55 +5971,55 @@ msgstr "Alespoň jedno z následujících musí být uvedeno: emoji_name, emoji_
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Alespoň jedna metoda autentizace musí být povolena."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Musí to být ukázková organizace."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Doména {domain} je již součástí vaší organizace."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Nebyl nalezen žádný záznam pro doménu {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Musíte nahrát přesně jeden soubor."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5492,7 +6053,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Musíte nahrát přesně jednu ikonu."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Tvůrce odkazů nenalezen"
 
@@ -5520,71 +6081,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Soukromé kanály nelze nastavit jako výchozí."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Je třeba nastavit \"new_description\" nebo \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Neplatná hodnota pro \"op\". Nastavte buď \"add\" nebo \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Kanál už se takto jmenuje!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nic k provedení. Zadejte aspoň jedno z \"add\" nebo \"delete\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} vás přidal/a do kanálu {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} vás přidal/a do následujících kanálů:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Nelze přistupovat ke kanálu ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Další uživatele, kteří jsou zrcadleni pomocí Zephyru, můžete zvát pouze do soukromých kanálů."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} vytvořil následující kanály: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} vytvořil nový kanál {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "Nové kanály"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** kanál vytvořen {user_name}. **Popis:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5593,7 +6154,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Neplatný JSON pro podzprávu"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Nejste oprávněn zobrazit tento soubor.
"
 
@@ -5617,112 +6178,112 @@ msgstr "Prázdný 'do' seznamu"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Neplatný elektronický klíč"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Neplatný název souboru"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Musíte zvolit soubor k nahrání"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Najednou můžete nahrát pouze jeden soubor"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Neposkytnuta žádná nová data"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Uživatel {user_id} již je členem této skupiny"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Změny avatarů jsou v této organizaci zakázány."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Změny e-mailu jsou v této organizaci zakázány."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Neplatný default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Vaše heslo pro Zulip je spravováno v LDAPu"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Chybné heslo!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Nové heslo je příliš slabé!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Musíte nahrát právě jeden obrázek avatara."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Téma není ztlumeno"
 
@@ -5783,43 +6344,43 @@ msgstr "Jednorázové e-maily nejsou v této organizaci povoleny"
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Neplatný elektronický klíč pro přístup k Zoom"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Přihlašovací údaje Zoom ještě nebyly nastaveny"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Neplatný identifikátor sezení Zoom"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Neplatné přihlašovací údaje Zoom"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Nepodařilo se vytvořit hovor Zoom"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "Server BigBlueButton - Velké modré tlačítko, není nastaven."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Neplatný podpis."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Chyba při připojování se k serveru BigBlueButton - Velké modré tlačítko."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Chyba při přihlašování k serveru BigBlueButton - Velké modré tlačítko."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Server BigBlueButton - Velké modré tlačítko, vrátil neočekávanou chybu."
 
@@ -5852,11 +6413,11 @@ msgstr "Neplatné užitečné zatížení"
 msgid "Unknown webhook request"
 msgstr "Neznámý požadavek na zpětné volání HTTP,  \"webhook request\""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Téma nemůže být prázdné"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Obsah nemůže být prázdný"
 
@@ -5883,7 +6444,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Nelze obsloužit \"stěžejní užitečné zatížení\""
 
@@ -5900,83 +6461,105 @@ msgstr "Zpráva ze Slacku"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Neplatná subdoména pro \"bouncer push\" oznámení"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Musí se prokázat platným Zulip server API klíčem"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Neplatné UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Neplatný typ elektronického klíče"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "Chybí uživatelské_id nebo user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Data nemají správné pořadí."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Musíte si znovu nastavit heslo."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Chybějící parametr id_token"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Neplatný OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Dohromady nelze použít jak mobile_flow_otp tak desktop_flow_otp."
diff --git a/locale/cs/translations.json b/locale/cs/translations.json
index 7d4ca739b8..ff7a2cffc7 100644
--- a/locale/cs/translations.json
+++ b/locale/cs/translations.json
@@ -3,24 +3,23 @@
   "(attached file)": "(soubor v příloze)",
   "(forever)": "(navždy)",
   "(hidden)": "(skryto)",
-  "(no description)": "(žádný popis)",
   "(no topic)": "(žádné téma)",
   "(or )": "(nebo )",
   "(you)": "(vy)",
   "({message_retention_days} days)": "({message_retention_days} dní)",
   "/dark (Switch to the dark theme)": "/dark (přepnout do tmavého vzhledu)",
   "/light (Switch to light theme)": "/light (přepnout do světlého vzhledu)",
-  "/me is excited (Display action text)": "/me je vzrušen (zobrazit text činnosti)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Kde dnes poobědváme? (vytvořit dotaz)",
-  "/todo (Create a todo list)": "/todo (vytvořit seznam věcí k udělání)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 den",
   "1 hour": "1 hodina",
   "1 week": "1 týden",
   "10 days": "10 dní",
   "10 minutes": "10 minut",
-  "12-hour clock (5:00 PM)": "12ti hodinové hodiny (5:00 ODP)",
+  "12-hour clock (5:00 PM)": "12hodinový formát (5:00 ODP)",
   "2 minutes": "2 minuty",
-  "24-hour clock (17:00)": "24ti hodinové hodiny (17:00)",
+  "24-hour clock (17:00)": "24hodinový formát (17:00)",
   "3 days": "3 dny",
   "30 days": "30 dní",
   "30 minutes": "30 minut",
@@ -28,7 +27,7 @@
   "6 hours": "6 hodin",
   "Total messages: {total_messages}": "Celkem zpráv: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} bude odstraněn ze zpráv, ve kterých byl sdílen. Tento krok nelze vzít zpět.
",
-  "Stream will be announced in #{notifications_stream}.
": "Kanál bude oznámen v #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Hledáte zprávy odeslané více než jednou osobou, což není možné.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Hledáte zprávy patřící k více než jednomu kanálu, což není možné.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Hledáte zprávy patřící k více než jednomu tématu, což není možné.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Činnost neznámá",
   "Add": "Přidat",
   "Add GIF": "Přidat GIF",
+  "Add a description": "",
   "Add a new alert word": "Přidat nové sledované slovo",
   "Add a new bot": "Přidat nového robota",
   "Add a new code playground": "Přidat nové hřiště s kódem",
@@ -207,6 +207,7 @@
   "Bot": "Robot",
   "Bot email": "Robotův e-mail",
   "Bot email (a-z, 0-9, and dashes only)": "Elektronická adresa robota (jen a-z, 0-9 a pomlčky)",
+  "Bot is deactivated": "",
   "Bot owner": "Vlastník robota",
   "Bot type": "Druh robota",
   "Bots": "Roboti",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Zavřít toto dialogové okno",
   "Code": "Kód",
   "Code playgrounds": "Dětská hřiště pro kód",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Sbalit koncept",
   "Collapse direct messages": "Sbalit přímé zprávy",
   "Collapse message": "Sbalit zprávu",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Nastavit metody autentizace pro vaší organizaci.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Nastavit výchozí kanály, které budou noví uživatele po připojení k vaší organizaci automaticky odebírat.",
   "Confirm": "Potvrdit",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Zvažte prohledávání všech veřejných kanálů.",
   "Contact a moderator to resolve this topic.": "Pro vyřešení tohoto tématu se spojte s moderátorem.",
   "Contact a moderator to unresolve this topic.": "Pro zrušení tohoto tématu se spojte s moderátorem.",
@@ -292,6 +294,7 @@
   "Copy code": "Kopírovat kód",
   "Copy link": "Kopírovat odkaz",
   "Copy link to message": "Kopírovat odkaz na zprávu",
+  "Copy link to profile": "",
   "Copy link to topic": "Kopírovat odkaz na téma",
   "Copy mention syntax": "Kopírovat skladbu zmínky",
   "Copy version": "Kopírovat verzi",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Smazat všechny návrhy",
   "Delete all selected drafts": "Smazat všechny vybrané návrhy",
   "Delete code playground?": "Smazat hřiště s kódem?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Smazat vlastní pole profilu?",
   "Delete data export?": "Smazat uložení dat?",
   "Delete draft": "Smazat návrh",
@@ -413,7 +417,6 @@
   "Domain": "Doména",
   "Don’t allow disposable email addresses": "Zakázat jednorázové e-mailové adresy",
   "Download": "Stáhnout",
-  "Download .zuliprc": "Stáhnout .zuliprc",
   "Download botserverrc": "Stáhnout botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Stáhnout nastavení všech činných robotů pro odchozí webhooky v Zulip Botserver formátu.",
   "Download file": "Stáhnout soubor",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Vzdělávání (ziskové)",
   "Education (non-profit)": "Vzdělávání (neziskové)",
   "Effect": "Efekt",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-mail",
   "Email address": "E-mailová adresa",
   "Email address changes are disabled in this organization.": "Změny e-mailu jsou v této organizaci zakázány.",
@@ -550,7 +554,7 @@
   "Follow": "Sledovat",
   "Followed": "Sledováno",
   "Followed topics": "Sledovaná témata",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Chcete-li například nastavit hřiště kódu pro bloky kódu označené jako Python, můžete nastavit:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Další příklady a technické podrobnosti naleznete v dokumentaci centra nápovědy o přidávání kódových hřišť.",
   "For more examples, see the help center documentation on adding linkifiers.": "Další příklady naleznete v dokumentaci centra nápovědy o přidávání odkazovačů.",
   "Forgot it?": "Zapomněl jste?",
@@ -606,6 +610,8 @@
   "Image": "Obrázek",
   "In a meeting": "Na schůzce",
   "In muted streams, stream notification settings apply only to unmuted topics.": "U ztlumených kanálů se nastavení upozornění na kanál vztahuje pouze na neztlumená témata.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Nečinný",
   "Inactive bots": "Nečinní roboti",
   "Inbox": "Došlá pošta",
@@ -704,9 +710,11 @@
   "Manage this bot": "Spravovat tohoto robota",
   "Manage this user": "Spravovat tohoto uživatele",
   "Manage user": "Spravovat uživatele",
+  "Manage your API key": "",
   "March": "Březen",
   "Mark all messages as read": "Označit všechny zprávy za přečtené",
   "Mark all messages as read?": "Označit všechny zprávy za přečtené?",
+  "Mark all messages as unread": "",
   "Mark as read": "Označit jako přečtené",
   "Mark as resolved": "Označit jako vyřešené",
   "Mark as unread from here": "Označit jako nepřečtené odtud",
@@ -722,6 +730,7 @@
   "Mentioned in": "Zmíněn v",
   "Mentions": "Zmínky",
   "Menus": "Nabídky",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Zpráva #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Zpráva #{stream_name} > {topic_name}",
   "Message actions": "Akce nad zprávou",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Zpráva {recipient_label}",
   "Message {recipient_names}": "Zpráva {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Zpráva {recipient_name} ({recipient_status})",
+  "Messages": "Zprávy",
   "Messages in all public streams": "Zprávy ve všech veřejných kanálech",
   "Messages sent by you": "Zprávy odeslané vámi",
   "Messages sent by {sender}": "Zprávy odeslané {sender}",
@@ -805,6 +815,7 @@
   "Never expires": "Nikdy nevyprší",
   "New": "Nový",
   "New direct message": "Nová přímá zpráva",
+  "New direct message from {sender_full_name}": "",
   "New email": "Nový e-mail",
   "New message": "Nová zpráva",
   "New option": "Nová volba",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Další nepřečtená přímá zpráva",
   "Next unread followed topic": "Další nepřečtené sledované téma",
   "Next unread topic": "Další nepřečtené téma",
-  "No bots found.": "Nebyli nalezeni žádní roboti.",
+  "No active users.": "",
   "No bots match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádní roboti.",
   "No conversations match your filters.": "Vašim filtrům neodpovídají žádné rozhovory.",
-  "No custom emojis found.": "Nebyly nalezeny žádné vlastní obrázečky.",
   "No custom emojis match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádné vlastní obrázečky.",
   "No custom profile field configured for this organization.": "Pro tuto organizaci není nastaveno žádné vlastní profilové pole.",
-  "No deactivated users found.": "Nebyli nalezeni žádní vypnutí uživatelé.",
-  "No default streams found.": "Nebyly nalezeny žádné výchozí kanály.",
   "No default streams match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádné výchozí kanály.",
   "No description.": "Žádný popis.",
   "No drafts selected": "Žádné vybrané návrhy",
   "No drafts.": "Žádné návrhy.",
-  "No exports found.": "Nebyla nalezena žádná uložená data.",
   "No group members match your current filter.": "Nynějšímu filtru neodpovídají žádní členové skupiny.",
-  "No invites found.": "Nebyly nalezeny žádné pozvánky.",
   "No invites match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádné pozvánky.",
   "No language set": "Nenastaven žádný jazyk",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádné odkazovače.",
-  "No linkifiers set.": "Nenastaven žádný generátor odkazů.",
   "No matching results": "Žádné odpovídající výsledky",
   "No matching streams": "Žádné odpovídající kanály",
   "No matching users.": "Žádní odpovídající uživatelé.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Žádná témata nejsou označena jako vyřešená.",
   "No topics match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádná témata.",
   "No uploaded files match your current filter.": "Vašemu nynějšímu filtru neodpovídají žádné nahrané soubory.",
+  "No user found": "",
   "No user group subscriptions.": "Žádné odběry skupin uživatelů.",
   "No user groups": "Žádné uživatelské skupiny",
   "No user to subscribe.": "Žádný uživatel k odběru.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Nikdo v této organizaci Zulip tuto e-mailovou adresu neuvidí.",
   "Non-profit (registered)": "Neziskové (registrováno)",
   "None": "Žádný",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Nezapomeňte, že všichni vámi udržovaní roboti budou vypnuti.",
   "Note that organizations are limited to five exports per week.": "Všimněte si, že organizace mohou uložit data maximálně pětkrát za týden.",
   "Nothing to preview": "Nic k náhledu",
@@ -932,6 +940,7 @@
   "Other permissions": "Jiná oprávnění",
   "Other settings": "Jiná nastavení",
   "Other users in this Zulip organization will be able to see this email address.": "Tuto e-mailovou adresu uvidí i ostatní uživatelé v této organizaci Zulip.",
+  "Others": "",
   "Out sick": "Nemocný",
   "Outgoing webhook message format": "Formát odchozí webhook zprávy",
   "Override default emoji?": "Přepsat výchozí obrázeček?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Vyžadovat využití témat ve zprávách kanálu",
   "Research": "Výzkum",
   "Resend": "Poslat znovu",
-  "Resend invitation": "Znovu odeslat pozvánku",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Při pokusu o opětovné poslání došlo k chybě. Načtěte stránku znovu a zkuste to ještě jednou.",
+  "Reset to default notifications": "",
   "Reset zoom": "Obnovit přiblížení",
   "Restore draft": "Obnovit návrh",
   "Restrict email domains of new users?": "Omezit domény e-mailů, ze kterých je umožněna registrace nových uživatelů?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Hledat  v tématu nebo obsahu zprávy.",
   "Search people": "Hledat osoby",
   "Search results": "Hledat výsledky",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Podívejte se jak nastavit e-mail.",
   "Select a stream": "Vybrat kanál",
   "Select a stream below or change topic name.": "Vyberte kanál níže nebo změňte název tématu.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Ukázat počet zpráv s hvězdičkami",
   "Show status text": "Zobrazit stavový text",
   "Show unread counts for": "Ukázat počty nepřečtených pro",
-  "Show/change your API key": "Ukázat/změnit váš API klíč",
   "Showing messages since {time_string}.": "Zobrazení zpráv od {time_string}.",
   "Sign up": "Zaregistrovat se",
   "Silent mentions do not trigger notifications.": "Tiché zmínky nespouštějí oznámení.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "E-mailová adresa odesílatele",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "Kanál #{stream_name} neexistuje. Spravujte své odběry na stránce vašich kanálů.",
   "The stream description cannot contain newline characters.": "Popis kanálu nemůže obsahovat znaky pro nový řádek.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Jejich heslo bude vymazáno z našich systémů a všichni jimi spravovaní roboti budou vypnuti.",
   "Theme": "Vzhled",
+  "There are no bots.": "",
   "There are no current alert words.": "Nyní nejsou dostupná žádná sledovaná slova.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Nejsou zde žádné zprávy.",
   "There are no streams you can view in this organization.": "V této organizaci nelze zobrazit žádné kanály.",
   "There are no unread messages in your inbox.": "Ve složce s došlou poštou nejsou žádné nepřečtené zprávy.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Tohoto robota nelze vypnout.",
   "This bot cannot be edited.": "Tohoto robota nelze upravit.",
   "This bot has been deactivated.": "Tento robot byl vypnut.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "Tento rozhovor může obsahovat další zprávy, které se v tomto zobrazení nezobrazují.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Tato ukázková organizace bude automaticky smazána za {days_remaining} dní, pokud není přeměněna na stálou organizaci.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "Tato funkce je dostupná v aplikaci Zulip Cloud Plus. Pro přístup k ní proveďte povýšení verze programu.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Tím se vymaže  pole profilu pro  uživatele.",
   "This will delete the  profile field for 1 user.": "Tím se smaže  pole profilu pro 1 uživatele.",
   "This will delete the  profile field for  users.": "Tím se smaže  pole profilu pro  uživatele",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Čtvrtek",
   "Time": "Čas",
   "Time format": "Formát času",
@@ -1240,6 +1259,7 @@
   "Today": "Dnes",
   "Today at {time}": "Dnes v {time}",
   "Toggle first emoji reaction on selected message": "Přepnout první odpověď obrázečkem na vybrané zprávě",
+  "Toggle preview mode": "",
   "Toggle subscription": "Přepnout odběr",
   "Toggle the gear menu": "Otevřít nastavení Zulipu",
   "Toggle topic mute": "Přepnout ztlumení tématu",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "Nemáte oprávnění přidávat další uživatele do kanálů v této organizaci.",
   "You do not have permission to join this group.": "Nemáte oprávnění připojit se k této skupině.",
   "You do not have permission to leave this group.": "Nemáte povolení opustit tuto skupinu.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Nemáte oprávnění přesouvat některé zprávy v tomto tématu. Pro přesunutí všech zpráv se spojte s moderátorem.",
   "You do not have permission to post in this stream.": "Nemáte oprávnění vkládat příspěvky do tohoto kanálu.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "V této organizaci nemáte oprávnění řešit témata se zprávami staršími než {N, plural, one {# day} other {# days}}.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Server Zulip {display_version}",
   "Zulip Server {display_version} (modified)": "Server Zulip {display_version} (modified)",
   "Zulip Server {display_version} (patched)": "Server Zulip {display_version} (patched)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "Zulip umožňuje nastavovat oznámení pro každé téma. Můžete také automaticky sledovat témata, která jste založili nebo se jich účastníte, nebo je zrušit.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Zulip umožňuje ztlumit témata a kanály, abyste nedostávali oznámení o zprávách, které vás nezajímají. Ztlumením kanálu se účinně ztlumí všechna témata v daném kanálu. Můžete také ručně ztlumit téma v neztlumeném kanálu nebo zrušit ztlumení tématu v ztlumeném kanálu. Zjistit více.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip potřebuje odeslat e-mail pro ověření adresy uživatele a posílání oznámení.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip potřebuje vaše dovolení pro povolení oznámení na ploše.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Překlady Zulipu přispívá naše úžasné společenství dobrovolných překladatelů. Pokud chcete být nápomocni, podívejte se na Pokyny pro překlad Zulipu.",
@@ -1541,6 +1561,9 @@
   "more topics": "další témata",
   "she/her": "ona/jí",
   "they/them": "oni/jim",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Hotovo! {N} zpráva označena jako přečtená.} few {Hotovo! {N} zprávy označeny jako přečtené.} many {Hotovo! {N} zpráv označeno jako přečtené.} other {Hotovo! {N} zpráv označeno jako přečtené.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Hotovo! {N} zpráva označena jako nepřečtená.} few {Hotovo! {N} zprávy označeny jako nepřečtené.} many {Hotovo! {N} zpráv označeno jako nepřečtené.} other {Hotovo! {N} zpráv označeno jako nepřečtené.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {Uživatel úspěšně pozván.} few {Uživatelé úspěšně pozváni.} many {Uživatelé úspěšně pozváni.} other {Uživatelé úspěšně pozváni.}}",
diff --git a/locale/cy/LC_MESSAGES/django.po b/locale/cy/LC_MESSAGES/django.po
index 2c04f571d6..ad6ea3c8b3 100644
--- a/locale/cy/LC_MESSAGES/django.po
+++ b/locale/cy/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Tim Abbott , 2022\n"
 "Language-Team: Welsh (http://app.transifex.com/zulip/zulip/language/cy/)\n"
@@ -19,57 +19,51 @@ msgstr ""
 "Language: cy\n"
 "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Ni chaniateir i ddefnyddwyr gwadd"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Sefydliad annilys"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Ffrydiau cyhoeddus"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Ffrydiau preifat"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Negeseuon uniongyrchol"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Grwpio negeseuon uniongyrchol"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Mae'r amser cychwyn yn hwyrach na'r amser gorffen. Dechreuwch: {start}, Diwedd: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Nid oes data dadansoddeg ar gael. Cysylltwch â gweinyddwr eich gweinydd."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Paramedrau annilys"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -78,7 +72,7 @@ msgid ""
 "users to join."
 msgstr "Nid oes gan eich sefydliad drwyddedau Zulip ar ôl ac ni all dderbyn defnyddwyr newydd mwyach. Plis [cynyddwch nifer y trwyddedau] ({billing_page_link}) neu [deactivate defnyddwyr anactif] ({deactivate_user_help_page_link}) i ganiatáu i ddefnyddwyr newydd ymuno."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -87,7 +81,7 @@ msgid ""
 "join."
 msgstr "Dim ond un drwydded Zulip sydd gan eich sefydliad ar ôl. Gallwch [gynyddu nifer y trwyddedau] ({billing_page_link}) neu [ddadactifadu defnyddwyr anactif] ({deactivate_user_help_page_link}) i ganiatáu i fwy nag un defnyddiwr ymuno."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr "Dim ond dwy drwydded Zulip sydd gan eich sefydliad ar ôl. Gallwch [gynyddu nifer y trwyddedau] ({billing_page_link}) neu [ddadactifadu defnyddwyr anactif] ({deactivate_user_help_page_link}) i ganiatáu i fwy na dau ddefnyddiwr ymuno."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr "Dim ond tair trwydded Zulip sydd gan eich sefydliad ar ôl. Gallwch [gynyddu nifer y trwyddedau] ({billing_page_link}) neu [ddadactifadu defnyddwyr anactif] ({deactivate_user_help_page_link}) i ganiatáu i fwy na thri defnyddiwr ymuno."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -114,11 +108,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Nid oedd aelod newydd ({email}) yn gallu ymuno â'ch sefydliad oherwydd bod pob trwydded Zulip yn cael ei defnyddio. Plis [cynyddwch nifer y trwyddedau] ({billing_page_link}) neu [deactivate defnyddwyr anactif] ({deactivate_user_help_page_link}) i ganiatáu i aelodau newydd ymuno."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Mae holl drwyddedau Zulip ar gyfer y sefydliad hwn yn cael eu defnyddio ar hyn o bryd."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -134,124 +128,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} yn gorffen yn {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Dull talu anhysbys. Cysylltwch â {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Aeth rhywbeth o'i le. Cysylltwch â {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Aeth rhywbeth o'i le. Ail-lwythwch y dudalen."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Aeth rhywbeth o'i le. Arhoswch ychydig eiliadau a rhoi cynnig arall arni."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Methu diweddaru'r cynllun. Mae'r cynllun wedi dod i ben a rhoi cynllun newydd yn ei le."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Methu diweddaru'r cynllun. Mae'r cynllun wedi dod i ben."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Methu diweddaru trwyddedau â llaw. Mae eich cynllun ar reoli trwydded yn awtomatig."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Mae eich cynllun eisoes ar drwyddedau {licenses} yn y cyfnod bilio cyfredol."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Ni allwch ostwng y trwyddedau yn y cyfnod bilio cyfredol."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Disgwylir i'ch cynllun adnewyddu eisoes gyda thrwyddedau {licenses_at_next_renewal}."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Dim byd i newid."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Dim cwsmer i'r sefydliad hwn!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Ni ddaethpwyd o hyd i sesiwn"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Rhaid bod yn weinyddwr biliau neu'n berchennog sefydliad"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Ni ddarganfuwyd bwriad talu"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Pasio stripe_session_id neu stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -259,54 +253,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Paramedrau annilys"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Gwall"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Ni chaniateir y dull (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Tudalen heb ei chanfod (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -315,8 +316,41 @@ msgid ""
 "                        "
 msgstr "\n                    Os yw'r gwall hwn yn annisgwyl, gallwch chi\n                        cysylltwch â chefnogaeth.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Ni chaniateir y dull (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Gwall gweinydd mewnol"
 
@@ -421,7 +455,7 @@ msgstr "Gweithredol 15 diwrnod"
 msgid "Total users"
 msgstr "Cyfanswm y defnyddwyr"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Defnyddwyr"
 
@@ -561,38 +595,134 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Sicrhewch eich bod wedi copïo'r ddolen yn gywir i'ch porwr. Os ydych chi'n dal i ddod ar draws y dudalen hon, mae'n debyg mai ein bai ni yw hynny. Mae'n ddrwg gennym."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Bilio"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Caewch y moddol"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Canslo"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Cadarnhau"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
 msgstr ""
 
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Statws bilio"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Rhagorwyd ar y terfyn cyfradd."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Gallwch roi cynnig arall arni mewn %(retry_after)s eiliad."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Uwchraddio"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Trosi sefydliad demo cyn uwchraddio."
+
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
 msgstr "Agor cyfeiriadur cymunedau"
@@ -612,6 +742,451 @@ msgstr "Categorïau"
 msgid "All"
 msgstr "I gyd"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Cymuned ddatblygu Zulip"
@@ -631,11 +1206,7 @@ msgstr "Ymunwch fel hunan-gwesteiwr"
 msgid "Join as a contributor"
 msgstr "Ymunwch fel cyfrannwr"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Statws bilio"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -650,12 +1221,12 @@ msgstr "Statws bilio"
 msgid "Create organization"
 msgstr "Creu sefydliad"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -688,51 +1259,48 @@ msgstr "Prisio addysg"
 msgid "View pricing"
 msgstr "Gweld prisio"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip am busnes"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Cysylltwch â chefnogaeth"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "O"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Trefniadaeth"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Pwnc"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Neges"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Cyflwyno"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Diolch am gysylltu â ni"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Diolch am gysylltu â ni!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Byddwn mewn cysylltiad â chi yn fuan."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -748,14 +1316,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Rhowch gynnig ar Zulip nawr"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Uwchraddio"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Trosi sefydliad demo cyn uwchraddio."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -803,7 +1363,7 @@ msgstr "Parhau"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Cofrestru"
 
@@ -836,8 +1396,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Mewngofnodi"
 
@@ -870,26 +1430,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Methu cysylltu â Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Efallai y bydd diweddariadau yn cael eu gohirio."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Ailgynnig yn fuan ..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Rhowch gynnig nawr."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Negeseuon"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Gwall is-barth dilysu"
@@ -1112,21 +1668,21 @@ msgstr "Defnyddwyr gwesteion"
 msgid "Normal users"
 msgstr "Defnyddwyr arferol"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Cau"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Diweddariad"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2349,7 +2905,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2369,7 +2925,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2379,12 +2944,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Cyfeiriad ebost"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Dewch o hyd i gyfrifon"
 
@@ -2416,7 +2981,7 @@ msgstr "Integreiddiadau"
 msgid "Desktop & mobile apps"
 msgstr "Apiau bwrdd gwaith a symudol"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Sefydliad newydd"
 
@@ -2784,25 +3349,16 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Rhagorwyd ar y terfyn cyfradd."
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "Rydych wedi rhagori ar y terfyn ar gyfer \npa mor aml y gall defnyddiwr gyflawni'r weithred hon."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Gallwch roi cynnig arall arni mewn %(retry_after)s eiliad."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2971,6 +3527,22 @@ msgstr "Beth mae gennych chi ddiddordeb ynddo?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Tanysgrifiwch fi i gylchlythyr traffig isel Zulip (ychydig o negeseuon e-bost y flwyddyn)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Ailosod eich cyfrinair"
@@ -3128,123 +3700,107 @@ msgid ""
 "                        "
 msgstr "\nGallwch hefyd ddefnyddio'r app bwrdd gwaith Zulip ."
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "cofrestriadau"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} newydd gofrestru ar gyfer Zulip. (cyfanswm: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "Derbyniodd {user} eich gwahoddiad i ymuno â Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Mapio archeb annilys."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Id maes {id} heb ei ddarganfod."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "Mae '{stream_name}' yn ffrwd ddiofyn ac ni ellir ei ychwanegu at '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Mae grŵp llif diofyn '{group_name}' eisoes yn bodoli"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Mae ffrwd '{stream_name}' eisoes yn bresennol yn y grŵp llif diofyn '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Nid yw ffrwd '{stream_name}' yn bresennol yn y grŵp llif diofyn '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Er mwyn amddiffyn defnyddwyr, mae Zulip yn cyfyngu ar nifer y gwahoddiadau y gallwch eu hanfon mewn un diwrnod. Oherwydd eich bod wedi cyrraedd y terfyn, ni anfonwyd unrhyw wahoddiadau."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Mae eich cyfrif yn rhy newydd i anfon gwahoddiadau ar gyfer y sefydliad hwn. Gofynnwch i weinyddwr sefydliad, neu ddefnyddiwr mwy profiadol."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Ni ddilysodd rhai e-byst, felly ni wnaethom anfon unrhyw wahoddiadau."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Nid oeddem yn gallu gwahodd unrhyw un."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3274,72 +3830,72 @@ msgstr "Methu newid cynnwys neges wrth newid nant"
 msgid "Widgets cannot be edited."
 msgstr "Ni ellir golygu widgets."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Mae eich sefydliad wedi diffodd golygu negeseuon"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Nid oes gennych ganiatâd i olygu'r neges hon"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Mae'r terfyn amser ar gyfer golygu'r neges hon wedi mynd heibio"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "Mae {user} wedi nodi'r pwnc hwn fel y'i datryswyd."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "Mae {user} wedi nodi'r pwnc hwn fel un heb ei ddatrys."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Symudwyd y pwnc hwn yma i {new_location} gan {user}"
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Symudwyd neges o'r pwnc hwn i {new_location} gan {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "Cafodd {changed_messages_count} neges eu symud o'r pwnc hwn i {new_location} gan {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Symudwyd y pwnc hwn yma o {old_location} gan {user}"
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} symudwyd negeseuon yma o {old_location} gan {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Mae eich sefydliad wedi diffodd golygu negeseuon"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Nid oes gennych ganiatâd i olygu'r neges hon"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Mae'r terfyn amser ar gyfer golygu'r neges hon wedi mynd heibio"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Nid oes gennych ganiatâd i symud y neges hon"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3358,137 +3914,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Neges(au) annilys"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Methu rhoi neges"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Disgwylir yn union un ffrwd"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Math o ddata annilys ar gyfer ffrwd"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Math data annilys ar gyfer derbynwyr"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Gall rhestrau derbynwyr gynnwys e-byst neu IDau defnyddiwr, ond nid y ddau."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Ceisiodd eich bot {bot_identity} anfon neges i ffrydio ID {stream_id}, ond nid oes ffrwd gyda'r ID hwnnw."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Ceisiodd eich bot {bot_identity} anfon neges i ffrydio {stream_name}, ond nid yw'r ffrwd honno'n bodoli. Cliciwch [yma] ({new_stream_link}) i'w greu."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Ceisiodd eich bot {bot_identity} anfon neges i ffrydio {stream_name}. Mae'r ffrwd yn bodoli ond nid oes ganddo unrhyw danysgrifwyr."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Mae angen pynciau yn y sefydliad hwn"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: Anfonodd rhaglennydd API gynnwys JSON annilys"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Mae emoji personol gyda'r enw hwn eisoes yn bodoli."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "Mae {user} wedi newid y [access permissions](/help/stream-permissions) ar gyfer y ffrwd hon o **{old_policy}** i **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3497,38 +4058,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} wedi newid y [posting permissions](/help/stream-sending-policy) ar gyfer y ffrwd hon:\n\n* **Old permissions**: {old_policy}.\n* **New permissions**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} ailenwyd yn ffrwd {old_stream_name} i {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Dim disgrifiad."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} wedi newid y disgrifiad ar gyfer y ffrwd hon."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Hen disgrifiad"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Disgrifiad newydd"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Am byth"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Bydd negeseuon yn y nant hon nawr yn cael eu cadw am byth."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3542,7 +4103,7 @@ msgstr "{user} wedi newid y [message retention period](/help/message-retention-p
 msgid "You cannot attach a submessage to this message."
 msgstr "Ni allwch atodi is-asesiad i'r neges hon."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3552,187 +4113,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Nid yw'r API hwn ar gael i bots webhook sy'n dod i mewn."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Nid yw cyfrif yn gysylltiedig â'r is-barth hwn"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Nid yw'r pwynt terfyn hwn yn derbyn ceisiadau bot."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Rhaid bod yn weinyddwr gweinydd"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Caniatâd annigonol"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Mae'r terfynbwynt hwn yn gofyn am ddilysiad sylfaenol HTTP."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Pennawd awdurdodi annilys ar gyfer awdur sylfaenol"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Pennawd awdurdodiad coll ar gyfer awdur sylfaenol"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Dim ond bachyngwe y gall bots bachyngwe eu cyrchu"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Mae eich cyfrif {username} wedi'i ddadactifadu. Cysylltwch â gweinyddwr eich sefydliad i'w ailysgogi."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Mae'r cyfrinair yn rhy wan"
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Mae angen i subdomain fod â hyd 3 neu fwy."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Ni all subdomain ddechrau na gorffen gyda '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Dim ond llythrennau bach, rhifau ac '-'au y gall is-barth eu cael."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Defnyddiwch eich cyfeiriad e-bost go iawn."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Nid yw'r sefydliad rydych chi'n ceisio ymuno ag ef gan ddefnyddio {email} yn bodoli."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Gofynnwch am wahoddwr am {email} gan weinyddwr y sefydliad."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Nid yw eich cyfeiriad e-bost, {email}, yn un o'r parthau y caniateir iddynt gofrestru ar gyfer cyfrifon yn y sefydliad hwn."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Ni chaniateir cyfeiriadau e-bost sy'n cynnwys + yn y sefydliad hwn."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Ni all aelodau newydd ymuno â'r sefydliad hwn oherwydd bod holl drwyddedau Zulip yn cael eu defnyddio. Cysylltwch â'r person a'ch gwahoddodd a gofyn iddynt gynyddu nifer y trwyddedau, yna ceisiwch eto."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Cyfrinair newydd"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Cadarnhad cyfrinair newydd"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Mae'ch cyfrinair wedi'i analluogi oherwydd ei fod yn rhy wan. Ailosodwch eich cyfrinair i greu un newydd."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Tocyn"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Rhowch 10 e-bost ar y mwyaf."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Ni allem ddod o hyd i'r sefydliad Zulip hwnnw."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Pwnc ar goll"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Ni all anfon i ffrydiau lluosog"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Ffrwd ar goll"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Rhaid i'r neges fod â derbynwyr"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Math o neges annilys"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Ymlyniad annilys"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Digwyddodd gwall wrth ddileu'r atodiad. Rho gynnig Arni eto'n hwyrach."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Rhaid bod gan y neges dderbynwyr!"
 
@@ -3789,88 +4350,88 @@ msgstr "Mae defnyddiwr wedi analluogi ddrafftiau cydamseru."
 msgid "Draft does not exist"
 msgstr "Nid yw drafft yn bodoli"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Agorwch Zulip i weld y cynnwys difetha"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Cyfeiriad annilys."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Y tu allan i'ch parth."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Ni chaniateir cyfeiriadau e-bost sy'n cynnwys +."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Wedi'i gadw ar gyfer bots system."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "mae gan {email} gyfrif eisoes"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Eisoes ganddo gyfrif."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Mae'r cyfrif wedi'i ddadactifadu."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoji personol annilys."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Enw emoji personol annilys."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Mae'r emoji personol hwn wedi'i ddadactifadu."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Cod emoji annilys."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Enw emoji annilys."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Math emoji annilys."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Rhaid bod yn weinyddwr sefydliad neu'n awdur emoji"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Mae enw Emoji ar goll"
 
@@ -3878,119 +4439,119 @@ msgstr "Mae enw Emoji ar goll"
 msgid "Could not allocate event queue"
 msgstr "Methu dyrannu ciw digwyddiad"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Heb fewngofnodi: Angen dilysu API neu sesiwn defnyddiwr"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Nid yw ffrwd '{stream}' yn bodoli"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Nid yw ffrwd ag ID '{stream_id}' yn bodoli"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "perchennog y sefydliad"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "defnyddiwr"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Methu dadactifadu'r unig {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Mae Markdown annilys yn cynnwys datganiad: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Roedd y defnydd o API yn uwch na'r terfyn cyfradd"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON camffurfiedig"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Rhaid bod yn aelod o'r sefydliad"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Rhaid bod yn weinyddwr sefydliad"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Rhaid bod yn berchennog sefydliad"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Mae eich enw defnyddiwr neu gyfrinair yn anghywir"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Mae'r cyfrif yn cael ei ddadactifadu"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Mae'r sefydliad hwn wedi'i ddadactifadu"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Mae'r cofrestriad gwasanaeth hysbysu gwthio symudol ar gyfer eich gweinydd wedi'i ddadactifadu"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Mae dilysu cyfrinair yn analluogi yn y sefydliad hwn"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Mae'ch cyfrinair wedi'i anablu ac mae angen ei ailosod"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Allwedd API annilys"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Allwedd API camffurfiedig"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Methu dosrannu cais: A wnaeth {webhook_name} gynhyrchu'r digwyddiad hwn?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Isbarth annilys"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Mynediad wedi ei wrthod"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3998,47 +4559,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Mae adwaith eisoes yn bodoli."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Nid yw adwaith yn bodoli."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Rhaid i gyfrif allanol personol ddiffinio patrwm URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Math o gyfrif allanol annilys"
 
@@ -4136,106 +4697,106 @@ msgstr "Cynhyrchedd"
 msgid "Version control"
 msgstr "Rheoli fersiwn"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Rhaid i'r neges beidio â bod yn wag"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Rhaid i'r neges beidio â chynnwys bytes nwl"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Gweithredwr cul annilys: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Dadl 'angor' ar goll."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Angor annilys"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Os ydych chi'n newydd i Zulip, edrychwch ar ein [Canllaw cychwyn arni] ({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Helo, a chroeso i Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Gallaf hefyd eich helpu i sefydlu! Cliciwch unrhyw le ar y neges hon neu pwyswch `r` i ateb."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Dyma ychydig o negeseuon rwy'n eu deall:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Ewch i [Gosodiadau proffil] (#gosodiadau/proffil) i ychwanegu [llun proffil] (/help/change-your-profile-picture) a golygu eich [gwybodaeth proffil] (/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4244,119 +4805,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "Yn Zulip, ffrydiau [penderfynu pwy sy'n cael neges] (/help/streams-and-topics). Maent yn debyg i sianeli mewn apiau sgwrsio eraill."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Pori a thanysgrifio i ffrydiau] (#ffrydiau/pob un)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "Yn Zulip, pynciau [dywedwch wrthych beth yw neges] (/help/frydiau-a-phynciau). Maent yn bynciau pwysau ysgafn, yn debyg iawn i linell pwnc e-bost."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Mae [llwybrau byr bysellfwrdd] Zulip (# bysellfwrdd-llwybrau byr) yn caniatáu ichi lywio'r ap yn gyflym ac yn effeithlon."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Pwyswch `?` Unrhyw bryd i weld [taflen twyllo] (#bysellfwrdd-llwybrau byr)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Mae Zulip yn defnyddio [Markdown] (/help/format-your-message-using-markdown), fformat greddfol ar gyfer **print trwm**, *italig*, rhestrau bwled, a mwy. Cliciwch [yma] (#message-formatting) i gael taflen twyllo."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Edrychwch ar ein [awgrymiadau negeseuon] (/help/messaging-tips) i ddysgu am adweithiau emoji, blociau cod a llawer mwy!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Edrychwch ar ein [Canllaw cychwyn arni] (/ help / dechrau-gyda-zulip), neu bori trwy'r [canolfan gymorth] (/ help /) i ddysgu mwy!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Mae'n ddrwg gen i, doeddwn i ddim yn deall eich neges. Rhowch gynnig ar un o'r gorchmynion canlynol:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Ffrwd breifat yw hon, fel y dangosir gan yr eicon clo wrth ymyl enw'r ffrwd."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Dim ond i aelodau ffrwdiau y mae ffrwd preifat yn weladwy."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "I reoli'r nant hon, ewch i [Gosodiadau nant] ({stream_settings_url}) a chlicio ar `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Dyma neges ar ffrwd #**{default_notification_stream_name}** gyda'r pwnc `arddangosiad pwnc`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Offeryn ysgafn yw pynciau i gadw sgyrsiau'n drefnus."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Gallwch ddysgu mwy am bynciau yn [Ffrydiau a phynciau] ({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Dyma neges ar nant #**{default_notification_stream_name}** gyda'r pwnc `crwbanod nofio`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "JSON annilys mewn ymateb"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Fformat ymateb annilys"
 
@@ -4370,45 +4931,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Nid yw Token yn bodoli"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Mae'r sefydliad hwn wedi anabl gan gynnwys cynnwys neges mewn hysbysiadau gwthio symudol"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "Soniodd {full_name} @ {user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "Soniodd {full_name} amdanoch chi:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "Soniodd {full_name} am bawb:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4420,23 +4981,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Nid yw'r defnyddiwr wedi'i awdurdodi ar gyfer yr ymholiad hwn"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "Nid yw '{email}' bellach yn defnyddio Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4456,21 +5017,21 @@ msgstr "Dadl ar goll '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Gwerth gwael ar gyfer '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Llwyth tâl anffurf"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4507,7 +5068,7 @@ msgstr "Dewiswch un: 'stream' neu 'stream_id'"
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4521,7 +5082,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4530,7 +5091,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Nid yw ffrydiau cyhoeddus ar y we wedi'u galluogi."
 
@@ -4562,28 +5123,28 @@ msgstr "Ni all y pwnc fod yn wag"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Nid oes data tanysgrifiwr ar gael ar gyfer y llif hwn"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Methu adfer tanysgrifwyr ar gyfer nant preifat"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "Nid yw {var_name} yn boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "nid yw {var_name} yn ddyddiad"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "nid yw {var_name} yn ddict"
@@ -4594,18 +5155,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "Nid yw {var_name} yn float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "Mae {var_name} yn rhy fach"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "nid yw {var_name} yn gyfanrif"
@@ -4615,24 +5176,24 @@ msgstr "nid yw {var_name} yn gyfanrif"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "Mae {var_name} yn rhy fawr"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "nid yw {var_name} yn rhestr"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Annilys {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "mae {var_name} yn rhy hir (terfyn: {max_length} nod)"
@@ -4642,8 +5203,8 @@ msgstr "mae {var_name} yn rhy hir (terfyn: {max_length} nod)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "nid yw {var_name} yn llinyn"
@@ -4662,21 +5223,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Byddai'r llwyth yn fwy na chwota uwchlwytho eich sefydliad."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Methu dadgodio delwedd; wnaethoch chi uwchlwytho ffeil delwedd?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Mae maint y ddelwedd yn fwy na'r terfyn."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Delwedd animeiddiedig llwgr."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Fformat delwedd animeiddiedig anhysbys."
 
@@ -4733,161 +5294,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Enw yn rhy hir!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Enw yn rhy fyr!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Cymeriadau annilys mewn enw!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Fformat annilys!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Mae'r enw eisoes yn cael ei ddefnyddio!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Enw, neu enw defnyddiwr, ddrwg"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Data cyfluniad annilys!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Math bot annilys"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Math rhyngwyneb annilys"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Dim bot o'r fath"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Dim defnyddiwr o'r fath"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Mae'r defnyddiwr wedi'i ddadactifadu"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "Ni all {item} fod yn wag."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "mae gan {var_name} hyd anghywir {length}; dylai fod yn {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "Nid yw {var_name} yn god lliw hecs dilys"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "Dylai fod gan {container} eitemau {length} yn union"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "mae allwedd {key_name} ar goll o {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "Nid yw {var_name} yn allow_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable}! = {expected_value} ({value} yn anghywir)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "nid yw {var_name} yn URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "Ni all '{item}' fod yn wag."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "Nid yw '{value}' yn ddewis dilys ar gyfer '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "nid yw {var_name} yn llinyn nac yn rhestr gyfanrif"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "nid yw {var_name} yn llinyn nac yn gyfanrif"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "Nid oes gan {var_name} hyd"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} ar goll"
@@ -4921,215 +5482,211 @@ msgstr "Gwall CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "digwyddiadau ffrwd"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Ar gael ar Zulip Safonol. Uwchraddio i gael mynediad."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Cymeriadau annilys mewn enw emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Gwall mynegiant rheolaidd anhysbys"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Cymeriadau annilys mewn iaith pygments"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Gweinyddwyr, cymedrolwyr ac aelodau a gwesteion"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Gweinyddwyr, cymedrolwyr ac aelodau"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Gweinyddwyr a chymedrolwyr"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Gweinyddwyr yn unig"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Neb"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Perchennog y sefydliad"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Gweinyddwr sefydliad"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Cymedrolwr"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Aelod"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Gwadd"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Gwe cyhoeddus"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Cyhoeddus"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Hanes preifat, a rennir"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Hanes preifat, gwarchodedig"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Hanes cyhoeddus, gwarchodedig"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Gall holl aelodau'r ffrwd bostio"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Dim ond gweinyddwyr sefydliad all bostio"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Dim ond gweinyddwyr a chymedrolwyr sefydliadau all bostio"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Dim ond aelodau llawn y sefydliad all bostio"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoji Unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji personol"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoji ychwanegol Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Rhestr o opsiynau"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Codwr person"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Testun byr"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Testun hir"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Codwr dyddiad"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Dolen"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Cyfrif allanol"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Gwall mynegiant rheolaidd anhysbys"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoji Unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji personol"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoji ychwanegol Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Cymeriadau annilys mewn enw emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Cymeriadau annilys mewn iaith pygments"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "digwyddiadau ffrwd"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Ar gael ar Zulip Safonol. Uwchraddio i gael mynediad."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Gwe cyhoeddus"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Cyhoeddus"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Hanes preifat, a rennir"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Hanes preifat, gwarchodedig"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Hanes cyhoeddus, gwarchodedig"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Gall holl aelodau'r ffrwd bostio"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Dim ond gweinyddwyr sefydliad all bostio"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Dim ond gweinyddwyr a chymedrolwyr sefydliadau all bostio"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Dim ond aelodau llawn y sefydliad all bostio"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Gweinyddwyr, cymedrolwyr ac aelodau a gwesteion"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Gweinyddwyr, cymedrolwyr ac aelodau"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Gweinyddwyr a chymedrolwyr"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Gweinyddwyr yn unig"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Neb"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Perchennog y sefydliad"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Gweinyddwr sefydliad"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Cymedrolwr"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Aelod"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Gwadd"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Cyfeiriad IP anhysbys"
@@ -5142,20 +5699,20 @@ msgstr "system weithredu anhysbys"
 msgid "An unknown browser"
 msgstr "Porwr anhysbys"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Eitem 'queue_id' ar goll"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Eitem 'last_event_id' ar goll"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Mae digwyddiad mwy newydd na {event_id} eisoes wedi'i docio!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Nid oedd digwyddiad {event_id} yn y ciw hwn"
@@ -5193,41 +5750,41 @@ msgstr "Mae'r cyfrinair yn anghywir"
 msgid "User-Agent header missing from request"
 msgstr "Pennawd Defnyddiwr-Asiant ar goll o gais"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Ni all label fod yn wag."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Rhaid i gae gael o leiaf un dewis."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Math cae annilys."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Mae maes gyda'r label hwnnw eisoes yn bodoli."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Ni ellir diweddaru maes arfer diofyn."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Pwynt gorffen ddim ar gael wrth gynhyrchu."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend heb ei alluogi."
 
@@ -5278,7 +5835,7 @@ msgstr "Rhaid i chi nodi o leiaf un cyfeiriad e-bost."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5327,19 +5884,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Anfonwr ar goll"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Ni chaniateir adlewyrchu gydag IDau defnyddiwr sy'n eu derbyn"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Neges annilys wedi'i adlewyrchu"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Ni chaniateir adlewyrchu Zephyr yn y sefydliad hwn"
 
@@ -5355,42 +5912,46 @@ msgstr "Defnyddiwr eisoes wedi'i dawelu"
 msgid "User is not muted"
 msgstr "Nid yw'r defnyddiwr yn dawel"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Ni chefnogir presenoldeb ar gyfer defnyddwyr bot."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Dim data presenoldeb ar gyfer {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Ni phasiodd y cleient unrhyw werthoedd newydd."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Rhaid i'r cleient basio emoji_name os yw'n pasio naill ai emoji_code neu reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Tocyn hyd gwag neu annilys"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Tocyn APNS annilys"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5405,55 +5966,55 @@ msgstr "Rhaid io leiaf un o'r dadleuon canlynol fod yn bresennol: emoji_name, em
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Rhaid galluogi o leiaf un dull dilysu."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Rhaid bod yn sefydliad demo."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Mae'r parth {domain} eisoes yn rhan o'ch sefydliad."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Ni ddarganfuwyd cofnod ar gyfer parth {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Rhaid i chi uwchlwytho un ffeil yn union."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5487,7 +6048,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Rhaid i chi uwchlwytho un eicon yn union."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Ni chafwyd hyd i gysylltydd."
 
@@ -5515,71 +6076,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Ni ellir gwneud ffrydiau preifat yn ddiofyn."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Rhaid i chi basio \"new_description\" neu \"new_group_name\""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Gwerth annilys ar gyfer \"op\". Nodwch un o \"ychwanegu\" neu \"tynnu\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Mae gan Ffrwd yr enw hwnnw eisoes!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Dim byd i wneud. Nodwch o leiaf un o 'ychwanegu' neu 'dileu'."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "tanysgrifiodd {user_full_name} chi i'r ffrwd {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "tanysgrifiodd {user_full_name} chi i'r ffrydiau canlynol:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Methu cyrchu ffrwd ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Dim ond i ffrydiau preifat y gallwch chi wahodd defnyddwyr eraill sy'n adlewyrchu Zephyr."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "Creodd {user_name} y ffrydiau canlynol: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "Creodd {user_name} nant newydd {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "ffrydiau newydd"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** ffrwd wedi'i chreu gan {user_name}. **Disgrifiad:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5588,7 +6149,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Json annilys ar gyfer submessage"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Nid oes gennych awdurdod i weld y ffeil hon.
"
 
@@ -5612,112 +6173,112 @@ msgstr "Rhestr wag 'to'"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Tocyn annilys"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Enw ffeil annilys"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Rhaid i chi nodi ffeil i'w huwchlwytho"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Dim ond un ffeil y gallwch ei lanlwytho ar y tro"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Ni chyflenwyd unrhyw ddata newydd"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Mae defnyddiwr {user_id} eisoes yn aelod o'r grŵp hwn"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Mae newidiadau Afatar yn anabl yn y sefydliad hwn."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Mae newidiadau cyfeiriad e-bost yn anabl yn y sefydliad hwn."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Default_language annilys"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Rheolir eich cyfrinair Zulip yn LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Cyfrinair anghywir!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Mae cyfrinair newydd yn rhy wan!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Rhaid i chi uwchlwytho un avatar yn union."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Nid yw'r pwnc yn cael ei dawelu"
 
@@ -5778,43 +6339,43 @@ msgstr "Ni chaniateir cyfeiriadau e-bost tafladwy yn y sefydliad hwn"
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Tocyn mynediad Zoom annilys"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Nid yw tystlythyrau chwyddo wedi'u ffurfweddu"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Dynodwr sesiwn Zoom annilys"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Cymwysterau Zoom annilys"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Wedi methu creu galwad Zoom"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "Nid yw BigBlueButton wedi'i ffurfweddu."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Llofnod annilys"
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Gwall wrth gysylltu â gweinydd BigBlueButton."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Gwall yn dilysu i'r gweinydd BigBlueButton."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Dychwelodd gweinydd BigBlueButton wall annisgwyl."
 
@@ -5847,11 +6408,11 @@ msgstr "Llwyth tâl annilys"
 msgid "Unknown webhook request"
 msgstr "Cais anhysbys ar webhook"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Ni all y pwnc fod yn wag"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Ni all y cynnwys fod yn wag"
 
@@ -5878,7 +6439,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Methu delio â llwyth tâl Pivotal"
 
@@ -5895,83 +6456,105 @@ msgstr "Neges gan Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Subdomain annilys ar gyfer hysbysiadau gwthio bouncer"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Rhaid dilysu gydag allwedd API gweinydd Zulip dilys"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID annilys"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Math tocyn annilys"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "user_id neu user_uuid ar goll"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Mae'r data allan o drefn."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Mae angen i chi ailosod eich cyfrinair."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Paramedr id_token ar goll"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP annilys"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Methu defnyddio mobile_flow_otp a desktop_flow_otp gyda'i gilydd."
diff --git a/locale/cy/translations.json b/locale/cy/translations.json
index e0e818254f..3a93c4c7f1 100644
--- a/locale/cy/translations.json
+++ b/locale/cy/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(am byth)",
   "(hidden)": "(cudd)",
-  "(no description)": "(dim disgrifiad)",
   "(no topic)": "(dim pwnc)",
   "(or )": "",
   "(you)": "(chi)",
   "({message_retention_days} days)": "({message_retention_days} diwrnod)",
   "/dark (Switch to the dark theme)": "/tywyll (Newid i'r thema dywyll)",
   "/light (Switch to light theme)": "/golau (Newid i'r thema golau)",
-  "/me is excited (Display action text)": "/fi yn gyffrous (Arddangos testun gweithredu)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Ble dylen ni fynd i ginio heddiw? (Creu arolwg barn)",
-  "/todo (Create a todo list)": "/todo (Creu rhestr todo)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 diwrnod",
   "1 hour": "1 awr",
   "1 week": "1 wythnos",
@@ -28,7 +27,7 @@
   "6 hours": "6 awr",
   "Total messages: {total_messages}": "Cyfanswm y negeseuon : {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "Cyhoeddir ffrwd yn #{notifications_stream} .
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Rydych chi'n chwilio am negeseuon sy'n cael eu hanfon gan fwy nag un person, nad yw'n bosibl.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Rydych chi'n chwilio am negeseuon sy'n perthyn i fwy nag un ffrwd, nad yw'n bosibl.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Rydych chi'n chwilio am negeseuon sy'n perthyn i fwy nag un pwnc, nad yw'n bosibl.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Ychwanegu",
   "Add GIF": "Ychwanegwch GIF",
+  "Add a description": "",
   "Add a new alert word": "Ychwanegwch air rhybuddio newydd",
   "Add a new bot": "Ychwanegwch bot newydd",
   "Add a new code playground": "Ychwanegwch faes chwarae cod newydd",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "E-bost bot",
   "Bot email (a-z, 0-9, and dashes only)": "E-bost bot (a-z, 0-9 yn unig)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Math bot",
   "Bots": "Botiau",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Caewch y ffenestr ymgom hon",
   "Code": "",
   "Code playgrounds": "Meysydd chwarae côd",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Cwymp yn cyfansoddi",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Ffurfweddwch y dulliau dilysu ar gyfer eich sefydliad.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Ffurfweddwch y ffrydiau diofyn y mae defnyddwyr newydd yn tanysgrifio iddynt wrth ymuno â'ch sefydliad.",
   "Confirm": "Cadarnhau",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Ystyriwch chwilio pob ffrwd gyhoeddus.",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "Copio côd",
   "Copy link": "Copi dolen",
   "Copy link to message": "Copi dolen i'r neges",
+  "Copy link to profile": "",
   "Copy link to topic": "Copi dolen i'r pwnc",
   "Copy mention syntax": "Copi sôn am gystrawen",
   "Copy version": "Copïwch y fersiwn",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Dileu pob drafft",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Dileu drafft",
@@ -413,7 +417,6 @@
   "Domain": "Parth",
   "Don’t allow disposable email addresses": "Peidiwch â chaniatáu cyfeiriadau e-bost tafladwy",
   "Download": "Dadlwythwch",
-  "Download .zuliprc": "Dadlwythwch .zuliprc",
   "Download botserverrc": "Dadlwythwch botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Dadlwythwch ffurfweddiad o'r holl bots gwefain gweithredol sy'n mynd allan ar ffurf Zulip Botserver.",
   "Download file": "Dadlwythwch ffeil",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Effaith",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-bost",
   "Email address": "Cyfeiriad ebost",
   "Email address changes are disabled in this organization.": "Mae newidiadau cyfeiriad e-bost yn anabl yn y sefydliad hwn.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Delwedd",
   "In a meeting": "Mewn cyfarfod",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Bots anactif",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "Rheoli'r defnyddiwr hwn",
   "Manage user": "Rheoli defnyddiwr",
+  "Manage your API key": "",
   "March": "Mawrth",
   "Mark all messages as read": "Marciwch bob neges fel y'i darllenwyd",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Marciwch fel y'i darllenwyd",
   "Mark as resolved": "Marciwch fel y'i datryswyd",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Wedi'i grybwyll yn",
   "Mentions": "Sôn am",
   "Menus": "Dewislenni",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Neges #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Neges #{stream_name} > {topic_name}",
   "Message actions": "Camau gweithredu negeseuon",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Neges {recipient_label}",
   "Message {recipient_names}": "Neges {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Neges {recipient_name} ({recipient_status})",
+  "Messages": "Negeseuon",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Peidiwch byth â dod i ben",
   "New": "Newydd",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "E-bost newydd",
   "New message": "Neges newydd",
   "New option": "Opsiwn newydd",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Pwnc nesaf heb ei ddarllen",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Nid oes unrhyw bots yn cyd-fynd â'ch hidlydd cyfredol.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Dim disgrifiad.",
   "No drafts selected": "",
   "No drafts.": "Dim drafftiau.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Nid oes unrhyw wahoddiadau yn cyd-fynd â'ch hidlydd cyfredol.",
   "No language set": "Dim iaith wedi setio",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Dim cysylltwyr wedi'u gosod.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Dim defnyddwyr sy'n cyfateb.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Nid oes unrhyw bynciau wedi'u marcio fel rhai wedi'u datrys.",
   "No topics match your current filter.": "Nid oes unrhyw bynciau yn cyd-fynd â'ch hidlydd cyfredol.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Dim tanysgrifiadau grŵp defnyddwyr.",
   "No user groups": "",
   "No user to subscribe.": "Dim defnyddiwr i danysgrifio.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Dim",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Sylwch y bydd unrhyw bots rydych chi'n eu cynnal yn anabl.",
   "Note that organizations are limited to five exports per week.": "Sylwch fod sefydliadau wedi'u cyfyngu i bum allforiad yr wythnos.",
   "Nothing to preview": "Dim i'w ragolwg",
@@ -932,6 +940,7 @@
   "Other permissions": "Caniatadau eraill",
   "Other settings": "Gosodiadau eraill",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Allan yn sâl",
   "Outgoing webhook message format": "Fformat neges webhook sy'n mynd allan",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Angen pynciau mewn negeseuon ffrwd",
   "Research": "Ymchwil",
   "Resend": "Ail-anfon",
-  "Resend invitation": "Ail-wahodd gwahoddiad",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Daeth preswylio ar draws gwall. Ail-lwythwch a rhoi cynnig arall arni.",
+  "Reset to default notifications": "",
   "Reset zoom": "Ailosod zoom",
   "Restore draft": "Adfer drafft",
   "Restrict email domains of new users?": "Cyfyngu parthau e-bost defnyddwyr newydd?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Chwilio am yn y pwnc neu'r cynnwys neges.",
   "Search people": "Chwilio pobl",
   "Search results": "Canlyniadau chwilio",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Gweld sut i ffurfweddu e-bost.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Dewiswch ffrwd isod neu newid enw pwnc.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Dangos cyfrif negeseuon serennog",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Dangos/newid eich allwedd API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Cofrestru",
   "Silent mentions do not trigger notifications.": "Nid yw cyfeiriadau distaw yn sbarduno hysbysiadau.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Ni all disgrifiad y nant gynnwys nodau llinell newydd.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Bydd eu cyfrinair yn cael ei glirio o'n sistemau, a bydd unrhyw botiau maen nhw'n eu cynnal yn anabl.",
   "Theme": "Thema",
+  "There are no bots.": "",
   "There are no current alert words.": "Nid oes unrhyw eiriau rhybuddio cyfredol.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Dydd Iau",
   "Time": "Amser",
   "Time format": "Fformat amser",
@@ -1240,6 +1259,7 @@
   "Today": "Heddiw",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Toglo tanysgrifiad",
   "Toggle the gear menu": "Toglo'r ddewislen gêr",
   "Toggle topic mute": "Toglo mud pwnc",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Mae angen i Zulip anfon e-bost i gadarnhau cyfeiriadau defnyddwyr ac anfon hysbysiadau.",
   "Zulip needs your permission to enable desktop notifications.": "Mae angen eich caniatâd ar Zulip galluogi hysbysiadau bwrdd gwaith.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Mae cyfieithiadau Zulip yn cael eu cyfrannu gan ein cymuned anhygoel o gyfieithwyr gwirfoddol. Os hoffech chi helpu, gwelwch y Canllawiau cyfieithu Zulip .",
@@ -1541,6 +1561,9 @@
   "more topics": "mwy o bynciau",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} two {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} two {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} two {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} two {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} two {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} two {} many {} other {}}",
diff --git a/locale/da/LC_MESSAGES/django.po b/locale/da/LC_MESSAGES/django.po
index 2c0bbd3cc4..f7b0d4805f 100644
--- a/locale/da/LC_MESSAGES/django.po
+++ b/locale/da/LC_MESSAGES/django.po
@@ -4,14 +4,14 @@
 # 
 # Translators:
 # jens_hymoller, 2023
-# jens_hymoller, 2023
+# jens_hymoller, 2023-2024
 msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: jens_hymoller, 2023\n"
+"Last-Translator: jens_hymoller, 2023-2024\n"
 "Language-Team: Danish (http://app.transifex.com/zulip/zulip/language/da/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,57 +19,51 @@ msgstr ""
 "Language: da\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Offentlige kanaler"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Private kanaler"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Private beskeder"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Private gruppe beskeder"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Invalide parametre"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -78,7 +72,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -87,7 +81,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -114,11 +108,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -134,124 +128,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -259,54 +253,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Invalide parametre"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Fejl"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -315,8 +316,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -421,7 +455,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Brugere"
 
@@ -561,36 +595,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Annuller"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Bekræft"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -612,6 +742,451 @@ msgstr "Katagorier"
 msgid "All"
 msgstr "Alle"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -631,11 +1206,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -650,12 +1221,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -688,51 +1259,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Fra"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisation"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Emne"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Besked"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -748,14 +1316,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -803,7 +1363,7 @@ msgstr "Fortsæt"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
 
@@ -836,8 +1396,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Log ind"
 
@@ -870,26 +1430,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Beskeder"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1112,21 +1668,21 @@ msgstr "Gæstebrugere"
 msgid "Normal users"
 msgstr "Normale brugere"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Luk"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Opdater"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2349,7 +2905,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2369,7 +2925,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2379,12 +2944,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Email adresse"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Find konti"
 
@@ -2416,7 +2981,7 @@ msgstr " Integrationer"
 msgid "Desktop & mobile apps"
 msgstr "Desktop og mobil -apps"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2784,12 +3349,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2798,11 +3359,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2971,6 +3527,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3128,123 +3700,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3274,72 +3830,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} har markeret dette emne som løst."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} har markeret dette emne som uløst."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
-msgstr ""
+msgstr "Dette emne blev flyttet til {new_location} af {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
-msgstr ""
+msgstr "En besked var flyttet fra dette emne til {new_location} af {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
-msgstr ""
+msgstr "{changed_messages_count} beskeder var flyttet fra dette emne til {new_location} af {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
-msgstr ""
+msgstr "Dette emne er flyttet hertil fra {old_location} af {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
-msgstr ""
+msgstr "[En besked]({message_link}) blev flyttet hertil fra {old_location} af {user}."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
-msgstr ""
+msgstr "{changed_messages_count} beskeder var flyttet her til fra {old_location} af {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3358,137 +3914,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Emne skal udfyldes"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Kanalen er allerede deaktiveret"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Kanalen er ikke deaktiveret"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Kanalen {stream_name} eksisterer i forvejen"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "Kanalen {stream_name} er ikke arkiveret."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3497,38 +4058,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Ingen beskrivelse"
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} ændrede beskrivelsen for denne kanal."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Gammel beskrivelse"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Ny beskrivelse"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "For evigt"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3542,7 +4103,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3552,187 +4113,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Utilstrækkelige tilladelser"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Manglende emne"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Kan ikke sende til mere end én kanal"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Beskeder skal have modtagere!"
 
@@ -3789,88 +4350,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3878,119 +4439,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "bruger"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3998,47 +4559,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4136,106 +4697,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Hvis du aldrig har prøvet zulip før, kan du læse [Using Zulip for a class guide]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Hvis du aldrig har prøvet zulip før, kan du læse vores [Guide til at komme i gang]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Hejsa og velkommen til Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Dette er en privat besked fra mig, Velkomstbotten."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Jeg kan også hjælpe dig med opsætning! Bare klik på denne besked og tryk 'r' for at svare."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Her er nogle få kommandoer jeg forstår:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Du kan [downloade](/apps/) [mobil og skrivebords -apps](/apps/). Zulip virker også i en browser."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4244,119 +4805,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Dette er en privat kanal, hvilket er indikeret af hængelåsen ved siden af kanalens navn."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4370,45 +4931,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
-msgstr ""
+msgstr "{full_name} nævnte @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
-msgstr ""
+msgstr "{full_name} nævnte dig:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
-msgstr ""
+msgstr "{full_name} nævnte alle:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
-msgstr ""
+msgstr "Test notifikation"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4420,23 +4981,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4456,21 +5017,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4507,7 +5068,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4521,7 +5082,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "En standardkanal kan ikke gøres privat."
 
@@ -4530,7 +5091,7 @@ msgstr "En standardkanal kan ikke gøres privat."
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4541,7 +5102,7 @@ msgstr ""
 
 #: zerver/lib/string_validation.py:41
 msgid "Stream name can't be empty!"
-msgstr ""
+msgstr "Kanalnavn kan ikke være tomt!"
 
 #: zerver/lib/string_validation.py:45
 #, python-brace-format
@@ -4562,28 +5123,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Kan ikke hente deltagere for private kanaler"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4594,18 +5155,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4615,24 +5176,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4642,8 +5203,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4662,21 +5223,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4733,161 +5294,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4921,215 +5482,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "kanalhistorik"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Admin, ejere, medlemmer og gæster"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Admin, ejere og medlemmer"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Admin og ejere"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Kun admin"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Ingen"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderator"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Medlem"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Gæst"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-offentligt"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Offentlig"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Privat, fuld adgang til historik"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Privat, beskyttet historik"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Offentlig, beskyttet historik"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronomener"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "kanalhistorik"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-offentligt"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Offentlig"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Privat, fuld adgang til historik"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Privat, beskyttet historik"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Offentlig, beskyttet historik"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Admin, ejere, medlemmer og gæster"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Admin, ejere og medlemmer"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Admin og ejere"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Kun admin"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Ingen"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderator"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Medlem"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Gæst"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5142,20 +5699,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5193,41 +5750,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5278,7 +5835,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5327,19 +5884,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5355,42 +5912,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5405,55 +5966,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5487,7 +6048,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5515,71 +6076,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "En privat kanal kan ikke gøres til standard."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} tilføjede dig til kanalen {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} tilføjede dig til følgende kanaler:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "nye kanaler"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** kanal oprettet af {user_name}. **Beskrivelse:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5588,7 +6149,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5612,112 +6173,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
-msgstr ""
+msgstr "Ugyldig token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
-msgstr ""
+msgstr "Ugyldigt filnavn"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
-msgstr ""
+msgstr "Du skal vælge en fil at uploade"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
-msgstr ""
+msgstr "Du kan kun uploade én fil ad gangen"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} tilføjede dig til gruppen {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5778,43 +6339,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5847,11 +6408,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5878,7 +6439,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5895,83 +6456,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/da/translations.json b/locale/da/translations.json
index f2407a6078..2ddf8a7ea8 100644
--- a/locale/da/translations.json
+++ b/locale/da/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(for altid)",
   "(hidden)": "(skjult)",
-  "(no description)": "(ingen beskrivelse)",
   "(no topic)": "(intet emne)",
   "(or )": "",
   "(you)": "(dig)",
   "({message_retention_days} days)": "({message_retention_days} dage)",
   "/dark (Switch to the dark theme)": "/dark (Skift til mørkt tema)",
   "/light (Switch to light theme)": "/light (Skift til lyst tema)",
-  "/me is excited (Display action text)": "/me er spændt (Vis handlingstekst)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Hvor skal vi spise frokost i dag? (Opret en afstemning)",
-  "/todo (Create a todo list)": "/todo (Opret en huskeliste)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dag",
   "1 hour": "1 time",
   "1 week": "1 uge",
@@ -28,7 +27,7 @@
   "6 hours": "6 timer",
   "Total messages: {total_messages}": "Samlet antal beskeder : {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Tilføj",
   "Add GIF": "Tilføj GIF",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -137,7 +137,7 @@
   "All time": "Altid",
   "All topics": "Alle emner",
   "All unmuted topics": "Alle emner med lyd",
-  "All unread messages": "",
+  "All unread messages": "Alle ulæste beskeder",
   "All users will need to log in again at your new organization URL.": "",
   "Allow creating web-public streams (visible to anyone on the Internet)": "",
   "Allow message content in message notification emails": "",
@@ -180,18 +180,18 @@
   "Are you sure you want to send @-mention notifications to the {subscriber_count} users subscribed to #{stream_name}? If not, please edit your message to remove the @{stream_wildcard_mention} mention.": "",
   "Are you sure you want to unstar all messages in ?  This action cannot be undone.": "",
   "Are you sure you want to unstar all starred messages?  This action cannot be undone.": "",
-  "Ask me later": "",
+  "Ask me later": "Spørg mig senere",
   "At the office": "På kontoret",
   "Audible": "Lyd",
   "Audible desktop notifications": "Afspil lyd ved popup",
   "August": "August",
   "Authentication methods": "",
-  "Author": "",
+  "Author": "Forfatter",
   "Automated messages and emails": "",
   "Automatic": "Automatisk",
   "Automatic (follows system settings)": "",
-  "Automatically follow topics": "",
-  "Automatically follow topics where I'm mentioned": "",
+  "Automatically follow topics": "Følg automatisk emner",
+  "Automatically follow topics where I'm mentioned": "Følg automatisk emner hvor jeg er nævnt",
   "Automatically mark messages as read": "Marker automatisk beskeder som læst",
   "Automatically unmute topics in muted streams": "",
   "Available on Zulip Cloud Standard. Upgrade or request sponsorship to access.": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "Bots",
@@ -220,8 +221,8 @@
   "By deactivating your account, you will be logged out immediately.": "",
   "Call provider": "",
   "Cancel": "Annuller",
-  "Cancel compose": "",
-  "Cancel compose and save draft": "",
+  "Cancel compose": "Annuller oprettelse",
+  "Cancel compose and save draft": "Annuller oprettelse og gem kladde",
   "Cannot join group {name}": "",
   "Cannot leave group {name}": "",
   "Cannot send message while files are being uploaded.": "",
@@ -231,7 +232,7 @@
   "Card": "",
   "Center the view around message ID .": "",
   "Change": "Skift",
-  "Change avatar": "",
+  "Change avatar": "Skift avatar",
   "Change color": "Skift farve",
   "Change email": "",
   "Change group info": "",
@@ -239,25 +240,25 @@
   "Change setting": "",
   "Check all": "",
   "Check your email ({email}) to confirm the new address.": "",
-  "Choose avatar": "",
+  "Choose avatar": "Vælg avatar",
   "Choose members": "",
   "Choose subscribers": "Vælg deltagere",
-  "Clear avatar": "",
+  "Clear avatar": "Ryd avatar",
   "Clear image": "",
   "Clear profile picture": "Fjern profilbillede",
-  "Clear status": "",
+  "Clear status": "Ryd status",
   "Clear topic": "Ryd emne",
-  "Clear your status": "",
+  "Clear your status": "Ryd din status",
   "Click here to reveal.": "",
   "Click on the pencil () icon to edit and reschedule a message.": "",
-  "Click to change notifications for this topic.": "",
+  "Click to change notifications for this topic.": "Klik for at ændre notifikationer for dette emne.",
   "Click to view or download.": "",
   "Close": "Luk",
   "Close modal": "",
   "Close this dialog window": "",
   "Code": "Kode",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Skjul",
   "Collapse direct messages": "Skjul direkte beskeder",
   "Collapse message": "Skjul besked",
@@ -272,12 +273,13 @@
   "Compose your message here": "Skriv din besked her",
   "Compose your message here...": "Skriv din besked her...",
   "Composing messages": "",
-  "Configure how Zulip notifies you about new messages. In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "Configure how Zulip notifies you about new messages. In muted streams, stream notification settings apply only to unmuted topics.": "Konfigurer hvordan Zulip underretter dig om nye beskeder. I kanaler uden lyd vil indstillinger for kanalnotifikationer kun gælde for emner med lyd.",
   "Configure regular expression patterns that will be used to automatically transform any matching text in Zulip messages and topics into links.": "",
   "Configure the default personal preference settings for new users joining your organization.": "",
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "Bekræft",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "Kopier link",
   "Copy link to message": "Kopier link til besked",
+  "Copy link to profile": "",
   "Copy link to topic": "Kopier link til emne",
   "Copy mention syntax": "Kopier henveldelses-link",
   "Copy version": "",
@@ -299,7 +302,7 @@
   "Could not resolve topic": "",
   "Could not unresolve topic": "",
   "Create": "Opret",
-  "Create a poll": "",
+  "Create a poll": "Oprettelse af afstemning",
   "Create a stream": "Opret en kanal",
   "Create a user group": "",
   "Create new stream": "Opret ny kanal",
@@ -323,8 +326,8 @@
   "DIRECT MESSAGES": "PRIVATE BESKEDER",
   "DM": "Privat",
   "DMs and mentions": "",
-  "DMs, mentions, and alerts": "Private beskeder, henvendelser, og alarmer",
-  "DMs, mentions, and followed topics": "",
+  "DMs, mentions, and alerts": "Private, henvendelser, alarmer",
+  "DMs, mentions, and followed topics": "Private, henvendelser og tilmeldte emner",
   "Dark": "Mørk",
   "Dark theme": "",
   "Dark theme logo": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "Slet alle valgte kladder",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -427,7 +430,7 @@
   "Drafts older than {draft_lifetime} days are automatically removed.": "Kladder som er ældre end {draft_lifetime} dage fjernes automatisk.",
   "Duration deletion is allowed after posting (minutes)": "",
   "Duration editing is allowed after posting (minutes)": "",
-  "EDITED": "",
+  "EDITED": "ÆNDRET",
   "Edit": "Redigér",
   "Edit #{stream_name}": "Rediger #{stream_name}",
   "Edit and reschedule message": "",
@@ -445,10 +448,11 @@
   "Edit your last message": "",
   "Edit your profile": "Rediger din profil",
   "Edit {group_name}": "",
-  "Edited by {full_name}": "",
+  "Edited by {full_name}": "Redigeret af {full_name}",
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "Email adresse",
   "Email address changes are disabled in this organization.": "",
@@ -487,7 +491,7 @@
   "Error saving edit": "",
   "Error: Cannot deactivate the only organization owner.": "",
   "Error: Cannot deactivate the only user. You can deactivate the whole organization though in your organization profile settings.": "",
-  "Escape key navigates to home view": "",
+  "Escape key navigates to home view": "Escape tast går til hjemmeskærm",
   "Estimated messages per week": "",
   "Event or conference": "",
   "Everyone": "Alle",
@@ -548,9 +552,9 @@
   "First time? Read our guidelines for creating and naming streams.": "Første gang? Læs vores ledetråde for oprettelse og navngivning af kanaler.",
   "First time? Read our guidelines for creating user groups.": "",
   "Follow": "Følg",
-  "Followed": "",
+  "Followed": "Tilmeldt",
   "Followed topics": "Emner du er tilmeldt",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "I møde",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inaktiv",
   "Inactive bots": "",
   "Inbox": "Indbakke",
@@ -664,10 +670,10 @@
   "Last 30 days": "Sidste 30 dage",
   "Last 6 months": "",
   "Last active": "Sidst aktiv",
-  "Last edited {last_edit_timestr}.": "",
+  "Last edited {last_edit_timestr}.": "Sidst redigeret {last_edit_timestr}.",
   "Last message": "Sidste besked",
   "Last modified": "",
-  "Last moved {last_edit_timestr}.": "",
+  "Last moved {last_edit_timestr}.": "Sidste flyttet {last_edit_timestr}.",
   "Learn more": "Yderligere",
   "Learn more about mentions here.": "Læs mere om henvendelser her.",
   "Learn more about starring messages here.": "Læs mere om favoritbeskeder her.",
@@ -694,7 +700,7 @@
   "Log in to browse more streams": "",
   "Log out": "Log ud",
   "Looking for our integrations or API documentation?": "",
-  "MOVED": "",
+  "MOVED": "FLYTTET",
   "Main menu": "Hovedmenu",
   "Make all messages my home view": "",
   "Make inbox my home view": "Gør indbakke til startside",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "Marts",
   "Mark all messages as read": "Marker alle beskeder som læst",
   "Mark all messages as read?": "Marker alle beskeder som læst?",
+  "Mark all messages as unread": "",
   "Mark as read": "Marker som læst",
   "Mark as resolved": "Marker som løst",
   "Mark as unread from here": "Marker som ulæst herfra",
@@ -722,6 +730,7 @@
   "Mentioned in": "Nævnt i",
   "Mentions": "Henvendelser",
   "Menus": "Menuer",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Skriv til #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Skriv til #{stream_name} > {topic_name}",
   "Message actions": "Beskedhandlinger",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Skriv til {recipient_label}",
   "Message {recipient_names}": "Skriv til {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Skriv til {recipient_name} ({recipient_status})",
+  "Messages": "Beskeder",
   "Messages in all public streams": "Beskeder i alle offentlige kanaler",
   "Messages sent by you": "Beskeder sendt af dig",
   "Messages sent by {sender}": "Beskeder sendt af {sender}",
@@ -759,7 +769,7 @@
   "Move some messages?": "Flyt nogle beskeder?",
   "Move this and all following messages in this topic": "Flyt denne og alle følgende beskeder i dette emne",
   "Move topic": "Flyt emne",
-  "Moved by {full_name}": "Fluyttet af {full_name}",
+  "Moved by {full_name}": "Flyttet af {full_name}",
   "Moving messages": "Flytter beskeder",
   "Must be invited by a subscriber; new subscribers can only see messages sent after they join; hidden from non-administrator users": "Man skal inviteres af et medlem; nye medlemmer kan kun se beskedhistorik fra tidspunktet de abonnerede; skjult for ikke-administratorer",
   "Must be invited by a subscriber; new subscribers can view complete message history; hidden from non-administrator users": "Man skal inviteres af et medlem; nye medlemmer kan se fuld beskedhistorik; skjult for ikke-administratorer",
@@ -805,6 +815,7 @@
   "Never expires": "Udløber aldrig",
   "New": "Ny",
   "New direct message": "Ny privat besked",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "Ny besked",
   "New option": "Nyt valg",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Næste ulæste besked",
   "Next unread followed topic": "",
   "Next unread topic": "Næste ulæste emne",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "Ingen samtaler matcher dine filtre.",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Ingen beskrivelse",
   "No drafts selected": "",
   "No drafts.": "Ingen kladder.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "Ingen matchene kanaler",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Ingen emner er markeret som løst.",
   "No topics match your current filter.": "Ingen emner matcher dit nuværende filter.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Syg",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -965,7 +974,7 @@
   "Please specify a stream.": "Specificer venligst en kanal",
   "Please specify at least one valid recipient.": "",
   "Political group": "",
-  "Posted by {full_name}": "",
+  "Posted by {full_name}": "Skrevet af {full_name}",
   "Preferences": "Preferencer",
   "Press > for list of topics": "",
   "Prevent users from changing their avatar": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1034,7 +1044,7 @@
   "SAVING": "GEMMER",
   "STREAMS": "KANALER",
   "Saturday": "Lørdag",
-  "Save": "Save",
+  "Save": "Gem",
   "Save changes": "Gem ændringer",
   "Save failed": "",
   "Saved": "Gemt",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Søg brugere",
   "Search results": "Søgeresultater",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "Vælg en kanal",
   "Select a stream below or change topic name.": "Vælg kanal herunder eller skift navn på emnet.",
@@ -1083,22 +1094,22 @@
   "Send mobile notifications even if user is online": "",
   "Send options": "Indstillinger for afsendelse",
   "Send weekly digest emails to inactive users": "",
-  "Sent!": "",
+  "Sent!": "Sendt!",
   "Sent! Your message is outside your current narrow.": "Beskeden er sendt men er udenfor din valgte visning.",
   "Sent! Your recent message is outside the current search.": "Beskeden er sendt men er udenfor din nuværende søgning.",
   "September": "September",
-  "Set a status": "",
-  "Set status": "",
+  "Set a status": "Sæt en status",
+  "Set status": "Sæt status",
   "Set up two factor authentication": "",
   "Settings": "Indstillinger",
   "Setup": "",
   "Several people are typing…": "Flere brugere skriver...",
   "Show API key": "",
-  "Show counts for starred messages": "",
-  "Show fewer": "",
+  "Show counts for starred messages": "Vis antal for favoritter",
+  "Show fewer": "Vis færre",
   "Show images in thread": "",
   "Show keyboard shortcuts": "",
-  "Show less": "",
+  "Show less": "Vis mindre",
   "Show message sender's user card": "",
   "Show more": "Vis mere",
   "Show password": "",
@@ -1107,11 +1118,10 @@
   "Show starred message count": "",
   "Show status text": "Vis status",
   "Show unread counts for": "Vis antal ulæste for",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
-  "Size": "",
+  "Size": "Størrelse",
   "Slack compatible": "",
   "Slack's outgoing webhooks": "",
   "Some common words were excluded from your search.": "",
@@ -1130,7 +1140,7 @@
   "Start a new topic or select one from the list.": "Start et nyt emne eller vælg et fra listen.",
   "Start export of public data": "",
   "Start new conversation": "Nyt emne",
-  "Status": "",
+  "Status": "Status",
   "Stream": "Kanal",
   "Stream color": "Kanalfarve",
   "Stream created recently": "",
@@ -1149,19 +1159,19 @@
   "Subscribe them": "",
   "Subscribe to ": "",
   "Subscribe to/unsubscribe from selected stream": "Tilmeld/afmeld valgte kanal",
-  "Subscribe {full_name} to streams": "",
+  "Subscribe {full_name} to streams": "Tilmeld {full_name} til kanaler",
   "Subscribed": "Dine kanaler",
   "Subscribed streams": "Tilmeldte emner",
   "Subscribed successfully!": "",
-  "Subscriber count": "",
+  "Subscriber count": "Deltagere",
   "Subscribers": "Deltagere",
   "Successfully subscribed user:": "",
   "Successfully subscribed users:": "",
   "Sunday": "Søndag",
   "Support Zulip": "Støt Zulip",
-  "Switch between tabs": "",
-  "Switch to dark theme": "",
-  "Switch to light theme": "",
+  "Switch between tabs": "Skift mellem faner",
+  "Switch to dark theme": "Skift til mørkt tema",
+  "Switch to light theme": "Skift til lyst tema",
   "System bot": "",
   "Task already exists": "",
   "Task list": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
-  "Theme": "",
+  "Theme": "Tema",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Der er ingen beskeder her.",
   "There are no streams you can view in this organization.": "Du kan ikke se nogen kanaler i denne organisation.",
   "There are no unread messages in your inbox.": "Der er ingen beskeder i din indbakke",
@@ -1189,13 +1206,14 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
   "This group has no members.": "",
   "This is a demo organization and will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This is not a publicly accessible conversation.": "",
-  "This is what a Zulip notification looks like.": "",
+  "This is what a Zulip notification looks like.": "Dette er sådan en Zulip notifikation ser ud.",
   "This is your home view.": "Dette er din standardvisning.",
   "This message could not be sent at the scheduled time.": "",
   "This message is no longer scheduled to be sent.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Torsdag",
   "Time": "",
   "Time format": "Tidsformat",
@@ -1240,6 +1259,7 @@
   "Today": "I dag",
   "Today at {time}": "I dag kl {time}",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1266,8 +1286,8 @@
   "Uncheck all": "",
   "Undo": "Undo",
   "Undo mute": "",
-  "Unknown": "",
-  "Unknown stream": "",
+  "Unknown": "Ukendt",
+  "Unknown stream": "Ukendt kanal",
   "Unknown stream #{search_text}": "",
   "Unknown user": "",
   "Unmute": "",
@@ -1277,11 +1297,11 @@
   "Unmuted": "",
   "Unmuted {stream_topic}.": "",
   "Unmuted streams and topics": "Kanaler og emner med lyd på",
-  "Unpin stream from top": "",
+  "Unpin stream from top": "Frigør kanal fra top",
   "Unread": "Ulæste",
   "Unread count badge (appears in desktop sidebar and browser tab)": "",
   "Unread messages": "",
-  "Unresolve topic": "",
+  "Unresolve topic": "Marker emne som uløst",
   "Unstar": "",
   "Unstar all messages": "",
   "Unstar all messages in topic": "",
@@ -1306,9 +1326,9 @@
   "Upload profile picture": "Upload profilbillede",
   "Upload stalled for %'{seconds}' seconds, aborting.": "",
   "Uploaded files": "Uploadede filer",
-  "Uploading {filename}…": "",
+  "Uploading {filename}…": "Uploader {filename}…",
   "Usage statistics": "Brugsstatistik",
-  "Use full width on wide screens": "",
+  "Use full width on wide screens": "Brug fuld bredde for wide-skærme",
   "Use html encoding (not recommended)": "",
   "Use organization level settings {org_level_message_retention_setting}": "Brug standard for organisationen {org_level_message_retention_setting}",
   "Use stream settings to unsubscribe from private streams.": "",
@@ -1316,8 +1336,8 @@
   "User": "Bruger",
   "User ID": "",
   "User group creation": "",
-  "User group description": "",
-  "User group name": "",
+  "User group description": "Brugergruppe beskrivelse",
+  "User group name": "Brugergruppe navn",
   "User group settings": "Indstillinger for brugergruppe",
   "User groups": "Brugergrupper",
   "User identity": "",
@@ -1338,10 +1358,10 @@
   "View direct messages": "Vis private beskeder",
   "View drafts": "Vis kladder",
   "View edit and move history": "",
-  "View edit history": "",
+  "View edit history": "Vis historik for redigering",
   "View file": "Vis fil",
   "View in playground": "",
-  "View in {name}": "",
+  "View in {name}": "Vis i {name}",
   "View in {playground_name}": "",
   "View message source": "Vis kildetekst",
   "View messages sent": "Vis sendte beskeder",
@@ -1359,7 +1379,7 @@
   "Visual desktop notifications": "Popup på skrivebordet",
   "Waiting period (days)": "Venteperiode (days)",
   "Waiting period before new members turn into full members": "",
-  "Warning: #{stream_name} is a private stream.": "",
+  "Warning: #{stream_name} is a private stream.": "Advarsel: #{stream_name} er en privat kanal.",
   "We are about to have a poll.  Please wait for the question.": "",
   "We strongly recommend enabling desktop notifications. They help Zulip keep your team connected.": "",
   "We've replaced the \"{originalHotkey}\" hotkey with \"{replacementHotkey}\" to make this common shortcut easier to trigger.": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1451,7 +1472,7 @@
   "You do not have permissions to generate invite links in this organization.": "",
   "You do not have permissions to send email invitations in this organization.": "",
   "You don't have any direct message conversations yet.": "Du har ingen private beskeder endnu.",
-  "You follow this topic": "",
+  "You follow this topic": "Du følger dette emne",
   "You get": "",
   "You have at least {unread_msgs_count} unread messages.": "",
   "You have {scheduled_message_count, plural, =1 {1 scheduled message} other {# scheduled messages}} for this conversation.": "",
@@ -1490,7 +1511,7 @@
   "You type": "",
   "You unsubscribed from stream ": "Du afmeldte kanal ",
   "You will automatically follow topics that you have configured to both follow and unmute.": "",
-  "You will get default notifications for this topic": "",
+  "You will get default notifications for this topic": "Du modtager standard notifikationer for dette emne",
   "You will not receive notifications about new messages.": "",
   "You're done!": "",
   "You're not subscribed to this stream. You will not be notified if other users reply to your message.": "",
@@ -1502,7 +1523,7 @@
   "Your message was sent to a stream you have muted.": "",
   "Your message was sent to a topic you have muted.": "",
   "Your password": "Dit password",
-  "Your question": "",
+  "Your question": "Dit spørgsmål",
   "Your status": "Din status",
   "Your time zone:": "Din tidszone",
   "Zoom to message in conversation context": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "Zulip skal have din tilladelse for at aktivere notifikationer på skrivebordet.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "flere emner",
   "she/her": "hun/hende",
   "they/them": "de/dem",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index a472ca3e0e..ba7a450121 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -34,16 +34,16 @@
 # Samuel Plentz, 2023
 # Tim Abbott , 2018,2020
 # Torsten Bauersfeld , 2019
-# Viktor, 2023
-# Viktor, 2023
-# Viktor, 2023
+# Viktor Illmer, 2023
+# Viktor Illmer, 2023
+# Viktor Illmer, 2023
 msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: Viktor, 2023\n"
+"Last-Translator: Viktor Illmer, 2023\n"
 "Language-Team: German (http://app.transifex.com/zulip/zulip/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -51,57 +51,51 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Nicht erlaubt für Gastnutzer:innen"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Ungültige Organisation"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Öffentliche Streams"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Private Streams"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Direktnachrichten"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Gruppennachrichten"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Fehlender Stream für Diagramm: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Unbekannter Diagrammname: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Die Startzeit ist später als die Endzeit. Start: {start}, Ende: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Keine Analysedaten verfügbar. Bitte kontaktiere den:die Server-Administrator:in."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Ungültige Parameter"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -110,7 +104,7 @@ msgid ""
 "users to join."
 msgstr "Deine Organisation hat keine Zulip-Lizenzen übrig und kann keine weiteren Nutzer:innen akzeptieren. Bitte [erhöhe die Anzahl der Lizenzen]({billing_page_link}) oder [deaktiviere inaktive Nutzer:innen]({deactivate_user_help_page_link}), damit neue Nutzer:innen beitreten können."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -119,7 +113,7 @@ msgid ""
 "join."
 msgstr "Deine Organisation hat nur noch eine Zulip-Lizenz übrig. Du kannst [die Anzahl der Zulip-Lizenzen erhöhen]({billing_page_link}) oder [inaktive Nutzer:innen deaktivieren]({deactivate_user_help_page_link}), damit mehr als nur noch ein:e Nutzer:in beitreten kann."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -128,7 +122,7 @@ msgid ""
 "join."
 msgstr "Deine Organisation hat nur noch zwei Zulip-Lizenzen übrig. Du kannst [die Anzahl der Zulip-Lizenzen erhöhen]({billing_page_link}) oder [inaktive Nutzer:innen deaktivieren]({deactivate_user_help_page_link}), damit mehr als nur noch zwei Nutzer:innen beitreten können."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -137,7 +131,7 @@ msgid ""
 "join."
 msgstr "Deine Organisation hat nur noch drei Zulip-Lizenzen übrig. Du kannst [die Anzahl der Zulip-Lizenzen erhöhen]({billing_page_link}) oder [inaktive Nutzer:innen deaktivieren]({deactivate_user_help_page_link}), damit mehr als nur noch drei Nutzer:innen beitreten können."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -146,11 +140,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Ein neues Mitglied ({email}) konnte deiner Organisation nicht beitreten, da alle Zulip-Lizenzen aufgebraucht sind. Bitte [erhöhe die Anzahl der Lizenzen]({billing_page_link}) oder [deaktiviere inaktive Nutzer:innen]({deactivate_user_help_page_link}), damit neue Nutzer:innen beitreten können."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Alle Zulip-Lizenzen für diese Organisation sind derzeit in Benutzung."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -166,124 +160,124 @@ msgstr "Registrierungen sind deaktiviert"
 msgid "Invalid remote server."
 msgstr "Ungültiger Remote-Server."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Du musst Lizenzen für alle aktiven Nutzer:innen in deiner Organisation erwerben (mindestens {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Rechnungen mit mehr als {max_licenses} Lizenzen können nicht von dieser Seite aus verarbeitet werden. Um das Upgrade zu vollenden, kontaktiere bitte {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Keine Zahlungsmethode hinterlegt."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} endet in {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Unbekannte Zahlungsmethode. Bitte kontaktiere {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Etwas hat nicht geklappt. Bitte {email} kontaktieren."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Etwas ist schief gelaufen.  Bitte lade die Seite erneut."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Etwas ist schief gelaufen. Bitte warte ein paar Sekunden und versuche es erneut."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Bitte füge vor Beginn deiner kostenlosen Testphase eine Kreditkarte hinzu."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "Bitte füge eine Kreditkarte hinzu, um ein Upgrade zu planen."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Konnte den Tarif nicht erneuern. Das Angebot ist abgelaufen und wurde durch ein neues ersetzt."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Konnte den Tarif nicht erneuern. Das Angebot wurde beendet."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "Kann Lizenzen im aktuellen Abrechnungszeitraum für das kostenlose Testabonnement nicht aktualisieren."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Konnte die Lizenzen nicht manuell erneuern. Dein Tarif sieht ein automatisches Lizenzmanagement vor."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Dein Tarif hat bereits {licenses} Lizenzen im aktuellen Abrechnungszeitraum."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Du kannst die Anzahl der Lizenzen im aktuellen Abrechnungszeitraum nicht reduzieren."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr "Für einen Tarif, der herabgestuft wird, können Lizenzen für den nächsten Abrechnungszyklus nicht geändert werden."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Dein Tarif sieht bereits vor, mit {licenses_at_next_renewal} verlängert zu werden."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Es gibt nichts zu ändern."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Du bist kein Kunde dieser Organisation!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Session nicht gefunden"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Muss ein:e Rechnungs-Administrator:in oder Eigentümer:in der Organisation sein."
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Keine Zahlabsicht gefunden"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Übergib stripe_session_id oder stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -291,54 +285,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Der Antrag deiner Organisation auf gesponsertes Hosting wurde genehmigt! Ihr wurdet kostenlos auf {plan_name} hochgestuft. {emoji}\n\nWenn ihr {begin_link}Zulip als Sponsor auf eurer Website auflisten könntet{end_link}, wären wir euch sehr dankbar!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr "Parameter 'confirmed' ist erforderlich"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "Zugriffstoken für die Abrechnung ist abgelaufen."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Zugriffstoken für die Abrechnung ist ungültig."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr "Fehler beim Migrieren des:der Kund:in von Server zu Realms. Bitte kontaktiere den Support für Hilfe."
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr "Nutzeraccount existiert noch nicht."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "Du musst den Nutzungsbedingungen zustimmen, um fortzufahren."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr "Diese zulip_org_id ist nicht im Abrechnungssystem von Zulip registriert."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr "Ungültiger zulip_org_key für diese zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "Deine Server-Registrierung wurde deaktiviert."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Ungültige Parameter"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Fehler"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Methode nicht erlaubt (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Seite nicht gefunden (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -347,8 +348,41 @@ msgid ""
 "                        "
 msgstr "\n                       Sollte dieser Fehler unerwartet kommen, bitte\n                        den Support kontaktieren.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Methode nicht erlaubt (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Interner Serverfehler"
 
@@ -453,7 +487,7 @@ msgstr "15-tägig aktive Nutzer:innen"
 msgid "Total users"
 msgstr "Gesamtzahl der aktiven Nutzer:innen"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Nutzer:innen"
 
@@ -593,37 +627,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Vergewissere dich, dass du den Link korrekt in deinen Browser kopiert hast. Solltest du wieder auf dieser Seite landen, liegt es vermutlich an uns. Tut uns leid."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Abrechnung"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Fenster schließen"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Abbrechen"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Herabstufen"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Herabstufen"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Bestätigen"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Abbrechen"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr "Upgrade abbrechen"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Rechnungsstatus"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Serverregistrierung deaktivieren?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr "Tarif-Management ist nicht verfügbar"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr " Das Tarif-Management ist für diese Organisation nicht verfügbar,\n                        weil dein Zulip-Server bereits über den\n                        %(server_plan_name)s-Tarif läuft, der alle Organisationen\n                        auf diesem Server abdeckt. Folge der Anleitung\n                        zum Einloggen\n                        nach Allen älteren Versionen\n                        des Zulip-Servers, um deinen Tarif zu managen.\n                        "
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr " Um den Tarif des Servers zu dieser\n                        Organisation zu übertragen, oder bei anderen Fragen, kontaktiere den Support.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr "\n                        Für diesen Server ist keine Tarifverwaltung verfügbar, da mindestens eine, auf diesem\n                        Server gehostete Organisation bereits einen aktiven Tarif hat.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr "\n                        Stattdessen zur Tarifverwaltung deiner Organisation anmelden,\n                        oder den Support kontaktieren und etwaige Fragen klären.\n                        "
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Tarifgrenze überschritten"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Tarifgrenze überschritten"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Du kannst es in %(retry_after)s Sekunden erneut versuchen."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Upgrade"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Vor dem Upgrade Demo-Organisation umwandeln."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -644,6 +774,451 @@ msgstr "Kategorien"
 msgid "All"
 msgstr "Alle"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr "Unbegrenzt"
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr "Unterstützt"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr "selbst gemanaged"
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr "Für Organisationen mit bis zu 10 Nutzern"
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr "Nicht verfügbar"
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Die Community der Zulip-Entwickler"
@@ -663,11 +1238,7 @@ msgstr "Als Selbst-Hoster beitreten"
 msgid "Join as a contributor"
 msgstr "Als Contributor beitreten"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Rechnungsstatus"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -682,12 +1253,12 @@ msgstr "Rechnungsstatus"
 msgid "Create organization"
 msgstr "Organisation erstellen"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Pläne & Preise"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -720,51 +1291,48 @@ msgstr "Preise für Ausbildung"
 msgid "View pricing"
 msgstr "Preise ansehen"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr "Serverregistrierung deaktivieren?"
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip für Business"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Support kontaktieren"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Von"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisation"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Betreff"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Nachricht"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Abschicken"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Vielen Dank für die Kontaktaufnahme"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Vielen Dank für die Kontaktaufnahme!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Wir melden uns bald bei dir."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -780,14 +1348,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Probiere Zulip jetzt aus"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Upgrade"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Vor dem Upgrade Demo-Organisation umwandeln."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -835,7 +1395,7 @@ msgstr "Fortfahren"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Registrieren"
 
@@ -868,8 +1428,8 @@ msgstr "Du hast bereits ein Konto?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Anmelden"
 
@@ -902,26 +1462,22 @@ msgstr "Wenn diese Meldung nicht verschwindet, versuche die Seite reloading the page."
 msgstr "Fehler beim Laden von Zulip. Versuche die Seite neu zu laden."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Verbindung zu Zulip kann nicht hergestellt werden."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Updates könnten verzögert werden."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Wird bald erneut versucht …"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Jetzt versuchen."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Nachrichten"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Fehler der Authentifizierungs-Subdomain"
@@ -1144,21 +1700,21 @@ msgstr "Gastnutzer:innen"
 msgid "Normal users"
 msgstr "Normale Nutzer:innen"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "E-Mails an ein E-Mail-Konto weiterleiten"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Schließen"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Aktualisieren"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2381,8 +2937,8 @@ msgstr "Dein Antrag auf ein Zulip-Sponsoring wurde genehmigt! Deine Organisation
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
-msgstr "Wenn du Zulip als Sponsor auf deiner Website auflisten könntest, würden wir uns sehr freuen!"
+"appreciate it!"
+msgstr "Wenn du Zulip als Sponsor deiner Webseite aufführen könntest, wüssten wir das sehr zu schätzen!"
 
 #: templates/zerver/find_account.html:4
 msgid "Find your accounts"
@@ -2401,7 +2957,16 @@ msgid ""
 "                    "
 msgstr "\n                    E-Mails gesendet! Du erhältst E-Mails nur an Adressen, die\n                    Zulip-Organisationen zugeordnet sind. Die auf der vorherigen\n                    Seite eingegebenen Adressen sind unten aufgeführt:\n "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2411,12 +2976,12 @@ msgid ""
 "                    "
 msgstr "\n                    Gebe deine E-Mail-Adresse ein, um eine E-Mail mit den URLs\n                    aller Zulip Cloud-Organisationen zu erhalten, in denen du\n                    aktive Konten hast. Solltest du auch dein Passwort vergessen\n                    haben, kannst du es zurücksetzen.\n "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "E-Mail-Adresse"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Accounts finden"
 
@@ -2448,7 +3013,7 @@ msgstr "Integrationen"
 msgid "Desktop & mobile apps"
 msgstr "Desktop & mobile Apps"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Neue Organisation"
 
@@ -2816,13 +3381,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Bitte wende dich an die Person, die dich eingeladen hat, und bitten sie, die Anzahl der Lizenzen zu erhöhen. Versuche es dann erneut."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Tarifgrenze überschritten"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Tarifgrenze überschritten"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2830,11 +3391,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Du hast das Limit überschritten, wie oft\n                        ein:e Nutzer:in diese Aktion durchführen kann."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Du kannst es in %(retry_after)s Sekunden erneut versuchen."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -3003,6 +3559,22 @@ msgstr "Woran bist du interessiert?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Abonniere den selten erscheinenden Zulip-Newsletter (einige wenige E-Mails pro Jahr)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr "Unerwartete Zulip-Serverregistrierung"
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr "\n                        Deine Zulip-Organisation ist einer anderen \n                        Zulip-Serverinstallation zugeordnet.\n\n                        Bitte kontaktiere den Zulip-Support,\n                        um Hilfe bei der Lösung dieses Problems zu erhalten.\n                        "
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Setze dein Passwort zurück"
@@ -3160,123 +3732,107 @@ msgid ""
 "                        "
 msgstr "\n                        Du kannst auch die Zulip Desktop-App verwenden.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr "Unerwartete Zulip-Serverregistrierung"
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr "\n                        Deine Zulip-Organisation ist einer anderen \n                        Zulip-Serverinstallation zugeordnet.\n\n                        Bitte kontaktiere den Zulip-Support,\n                        um Hilfe bei der Lösung dieses Problems zu erhalten.\n                        "
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "Anmeldungen"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} hat sich gerade bei Zulip angemeldet. (gesamt: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} hat deine Einladung zum Beitritt zu Zulip angenommen!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "Ein Platzhalterkonto kann nicht aktiviert werden; fordere den:die Nutzer:in stattdessen auf, sich zu registrieren."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Ungültige Anordungs-Zuweisung"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Die Feld-ID {id} konnte nicht gefunden werden."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "Ungültiger Standardstream-Gruppenname '{group_name}'"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr "Standardstream-Gruppenname zu lang (Limit: {max_length} Zeichen)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr "Standardstream-Gruppenname '{group_name}' enthält NULL-Zeichen (0x00)."
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr "Ungültige Standardstream-Gruppe {group_name}"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' ist ein Standard-Stream und kann nicht zu '{group_name}' hinzugefügt werden"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Standard-Streamgruppe '{group_name}' existiert bereits"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Der Stream '{stream_name}' existiert bereits in der Standard-Streamgruppe '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Der Stream '{stream_name}' existiert nicht in der Standard-Streamgruppe '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr "Diese Standardstream-Gruppe heißt bereits '{group_name}'."
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Um Nutzer:innen zu schützen, beschränkt Zulip die Anzahl der Einladungen, die du pro Tag versenden kannst. Da du dieses Limit bereits erreicht hast, wurden keine Einladungen versandt."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Dein Account ist noch zu neu, um Einladungen für diese Organisation verschicken zu können. Frage eine:n Administrator:in der Organisation oder eine:n erfahrenere:n Nutzer:in."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Einige E-Mail-Adressen konnten nicht validiert werden, deshalb wurden noch keine Einladungen gesendet."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Kann niemanden mehr einladen."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3306,72 +3862,72 @@ msgstr "Kann den Inhalt von Nachrichten nicht ändern, während der Stream geän
 msgid "Widgets cannot be edited."
 msgstr "Widgets können nicht bearbeitet werden."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Das Editieren von Nachrichten ist in deiner Organisation deaktiviert"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Du bist nicht berechtigt, diese Nachricht zu bearbeiten"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Das Editierlimit für diese Nachricht ist ausgelaufen"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} hat dieses Thema als gelöst markiert."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} hat dieses Thema als ungelöst markiert."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Dieses Thema wurde von {user} nach {new_location} verschoben."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Eine Nachricht wurde von {user} aus diesem Thema nach {new_location} verschoben."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} Nachrichten wurden von {user} aus diesem Thema nach {new_location} verschoben."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Dieses Thema wurde von {user} aus {old_location} hierher verschoben."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[Eine Nachricht]({message_link}) wurde von {user} von {old_location} hierher verschoben."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} Nachrichten wurden von {user} aus {old_location} hierher verschoben."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Das Editieren von Nachrichten ist in deiner Organisation deaktiviert"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Du bist nicht berechtigt, diese Nachricht zu bearbeiten"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Das Editierlimit für diese Nachricht ist ausgelaufen"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "Das Zeitlimit zum Bearbeiten des Themas dieser Nachricht ist abgelaufen."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Du bist nicht berechtigt, diese Nachricht zu verschieben"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Die Frist, in der der Stream dieser Nachricht bearbeitet werden kann, ist abgelaufen"
 
@@ -3390,137 +3946,142 @@ msgstr "Flag nicht editierbar: '{flag}'"
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "Ungültige Nachrichten-Flag-Operation: '{operation}'"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Ungültige Nachricht(en)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Kann Nachricht nicht rendern"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Erwarte genau einen Stream"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Ungültiger Datentyp für Stream"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Ungültiger Datentyp für Empfänger:innen"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Empfängerlisten können E-Mail-Adressen oder Nutzer-IDs enthalten, aber nicht beides."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Dein Bot {bot_identity} hat versucht, eine Nachricht an den Stream mit der ID {stream_id} zu senden, aber es gibt keinen Stream mit dieser ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Dein Bot {bot_identity} hat versucht, eine Nachricht an den Stream {stream_name} zu senden, aber dieser Stream existiert nicht. Klicke [hier]({new_stream_link}), um ihn zu erstellen."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Dein Bot {bot_identity} hat versucht, eine Nachricht an den Stream {stream_name} zu senden. Der Stream existiert, hat aber keine Abonnent:innen."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Direktnachrichten sind in dieser Organisation deaktiviert."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr "Du bist nicht berechtigt, auf einige der Empfänger:innen zuzugreifen."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "In dieser Organisation müssen Themen angegeben werden."
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: Der API-Programmierer hat ungültiges JSON gesendet"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Es existiert bereits ein benutzerdefinierter Emoji mit diesem Namen."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr "Die geordnete Liste darf keine doppelten Linkifier enthalten"
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr "Die geordnete Liste muss alle vorhandenen Linkifier genau einmal aufführen"
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Die geplante Nachricht wurde bereits gesendet"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "Die geplante Sendezeit muss in der Zukunft liegen."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Die Nachricht konnte zum geplanten Zeitpunkt nicht gesendet werden."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Die für {delivery_datetime} geplante Nachricht wurde aufgrund des folgenden Fehlers nicht gesendet:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[Geplante Nachrichten anzeigen](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Stream ist bereits deaktiviert"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Stream ist derzeit nicht deaktiviert"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Stream mit dem Namen {stream_name} existiert bereits"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "Stream {stream_name} nicht mehr archiviert."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} hat die [Zugriffsreche](/help/stream-permissions) für diesen Stream von **{old_policy}** zu **{new_policy}** geändert."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3529,38 +4090,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} hat die [Schreibberechtigungen](/help/stream-sending-policy) für diesen Stream geändert:\n\n* **bisherige Berechtigungen**: {old_policy}.\n* **neue Berechtigungen**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} hat den Stream {old_stream_name} in {new_stream_name} umbenannt."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Keine Beschreibung."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} hat die Beschreibung dieses Streams geändert."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Alte Beschreibung"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Neue Beschreibung"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Für immer"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Ab sofort werden Nachrichten in diesem Stream für immer aufbewahrt."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3574,7 +4135,7 @@ msgstr "{user} hat den [Zeitraum für das Aufbewahren von Nachrichten](/help/mes
 msgid "You cannot attach a submessage to this message."
 msgstr "Du kannst keine Unternachricht an diese Nachricht anhängen."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr "Ungültige Nutzer-ID {user_id}"
@@ -3584,187 +4145,187 @@ msgstr "Ungültige Nutzer-ID {user_id}"
 msgid "User group '{group_name}' already exists."
 msgstr "Nutzergruppe '{group_name}' existiert bereits."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Diese API ist nicht zugänglich für \"Incoming Webhook\"-Bots."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Der Account gehört nicht zu dieser Subdomain"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Dieser Endpunkt akzeptiert keine Bot-Anfragen."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Muss ein:e Server-Administrator:in sein"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Unzureichende Berechtigungen"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Dieser Endpunkt benötigt HTTP Basic Authentication."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Ungültiger Authorization Header für Basic Auth"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Fehlender Authentifikations-Header für Basic Auth."
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook-Bots können nur auf Webhooks zugreifen"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Dein Account {username} wurde deaktiviert. Bitte setze dich mit dem:der Administrator:in deiner Organisation in Verbindung, um ihn zu reaktivieren."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Das Passwort ist zu schwach."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomain muss mindestens 3 Zeichen lang sein."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Die Subdomain darf nicht mit einem '-' beginnen oder enden."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Die Subdomain darf nur Kleinbuchstaben, Zahlen und '-' enthalten."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Subdomain wird bereits verwendet. Bitte wähle eine andere."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Subdomain bereits reserviert. Bitte wähle eine andere."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Bitte benutze deine echte E-Mail-Adresse."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Die Organisation, der du mit der E-Mail-Adresse {email} beitreten willst, existiert nicht."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Bitte frage den:die Organisations-Administrator:in nach einer Einladung für {email}."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Deine E-Mail-Adresse {email} gehört zu keiner der für die Registrierung bei dieser Organisation erlaubten Domains."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "E-Mail-Adressen, die + enthalten, sind in dieser Organisation nicht erlaubt."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Neue Mitglieder können dieser Organisation nicht beitreten, da alle Zulip-Lizenzen bereits verwendet werden. Bitte kontaktiere die Person, die dich eingeladen hat, und bitte sie, die Anzahl der Lizenzen zu erhöhen, und versuche es dann erneut."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Neues Passwort"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Neues Passwort bestätigen"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr "Du versuchst zu oft, dich anzumelden. Versuche es in {seconds} Sekunden erneut oder wende dich an deine:n Organisations-Administrator:in, um Hilfe zu erhalten."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Dein Passwort wurde deaktiviert, weil es zu schwach ist. Setze dein Passwort zurück, um ein neues zu erstellen."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Tipp: Du kannst mehrere E-Mail-Adressen mit Kommas getrennt eingeben."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Bitte gib höchstens 10 E-Mail-Adressen ein."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Wir konnten diese Zulip-Organisation nicht finden."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Ungültige E-Mail '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Fehlendes Thema"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Kann nicht an mehrere Streams senden"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Fehlender Stream"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Nachricht muss Empfänger:innen haben"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Ungültiger Nachrichtentyp"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Ungültiger Anhang"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Beim Löschen des Anhangs ist ein Fehler aufgetreten. Bitte versuche es später erneut."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Nachricht muss Empfänger:innen haben!"
 
@@ -3821,88 +4382,88 @@ msgstr "Nutzer:in hat die Synchronisierung der Entwürfe deaktiviert."
 msgid "Draft does not exist"
 msgstr "Entwurf existiert nicht"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Öffne Zulip, um den Inhalt des Spoilers zu sehen"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr "{service_name} Benachrichtigungen"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Ungültige Adresse."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Außerhalb deiner Domain."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "E-Mail-Adressen, die + enthalten, sind nicht erlaubt."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Für System-Bots reserviert."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "Ein Account für {email} existiert bereits."
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Hat schon ein Konto."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Account wurde deaktiviert."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "Emoji '{emoji_name}' existiert nicht"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Ungültiger benutzerdefinierter Emoji."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Ungültiger Name für einen benutzerdefinierten Emoji."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Dieser benutzerdefinierte Emoji wurde deaktiviert."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Ungültiger Emoji-Code."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Ungültiger Emoji-Name."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Ungültiger Emoji-Typ."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Muss ein:e Organisations-Administrator:in oder Emoji-Autor:in sein."
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Namen von Emojis müssen entweder mit einem Buchstaben oder mit einer Zahl enden."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Namen von Emojis dürfen nur aus Kleinbuchstaben ohne Umlauten, Zahlen, Leerzeichen, Strichen und Unterstrichen bestehen."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Emoji-Bezeichnung fehlt"
 
@@ -3910,119 +4471,119 @@ msgstr "Emoji-Bezeichnung fehlt"
 msgid "Could not allocate event queue"
 msgstr "Kann Ereigniskette nicht zuteilen"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Nicht angemeldet: API-Authentifizierung oder Nutzer-Session benötigt"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Stream '{stream}' existiert nicht"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Stream mit ID '{stream_id}' existiert nicht"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "Organisations-Besitzer:in"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "Nutzer:in"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Mindestens eine/r/s {entity} muss aktiviert bleiben."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Ungültiges Markdown-Include-Statement: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API-Nutzungsrate überschritten"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Fehlerhaftes JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Muss ein Mitglied der Organisation sein"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Muss ein:e Organisations-Administrator:in sein"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Muss ein:e Organisations-Besitzer:in sein"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Dein Nutzername oder Passwort ist falsch"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Account ist deaktiviert"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Diese Organisation wurde deaktiviert"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Die Registrierung für die mobilen Push-Benachrichtigungen wurde für deinen Server deaktiviert"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "In dieser Organisation ist die Authentifikation mit Passwort ausgeschaltet."
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Dein Passwort wurde deaktiviert und muss zurückgesetzt werden."
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Ungültiger API-Schlüssel"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Inkorrekter API-Schlüssel"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr "Das Ereignis '{event_type}' wird derzeit vom Webhook {webhook_name} nicht unterstützt; ignoriere"
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Konnte die Anfrage nicht parsen: Hat {webhook_name} dieses Ereignis generiert?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Nutzer:in nicht authentifiziert"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Ungültige Subdomain"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Zugang verweigert"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4030,47 +4591,47 @@ msgid ""
 "messages in this topic."
 msgstr "Du bist nur berechtigt, die {total_messages_allowed_to_move}/{total_messages_in_topic} neuesten Nachrichten in diesem Thema zu verschieben."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reaktion existiert bereits."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reaktion existiert nicht."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr "Deine Zulip-Organisation ist einer anderen Zulip-Serverinstallation zugeordnet. Bitte kontaktiere den Zulip-Support, um Hilfe bei der Lösung dieses Problems zu erhalten."
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr "Organisation nicht registriert"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "Du bist nicht berechtigt, Stream-Platzhalter-Erwähnungen in diesem Stream zu nutzen."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "Du bist nicht berechtigt, Themen-Platzhalter-Erwähnungen in diesem Stream zu nutzen."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitter-Benutzername"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "GitHub-Benutzername"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Benutzerdefiniertes externes Konto muss URL-Muster definieren"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Unzulässige externe Kontoart"
 
@@ -4168,106 +4729,106 @@ msgstr "Produktivität"
 msgid "Version control"
 msgstr "Versionsverwaltung"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Nachricht darf nicht leer sein"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Nachricht darf keine Null-Bytes enthalten"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr "Du darfst die Nutzergruppe '{user_group_name}' nicht erwähnen. Du musst ein Mitglied von '{can_mention_group_name}' sein, um diese Gruppe zu erwähnen."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr "Operator {operator} nicht unterstützt."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Ungültiger Begrenzungs-Operator: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Fehlendes 'anchor'-Argument"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Ungültiger Anker"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Wenn du neu bei Zulip bist, schau dir unsere [Anleitung zur Verwendung von Zulip für Klassen]({getting_started_url}) an!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Wenn du neu bei Zulip bist, schau dir doch einmal unsere [Startanleitung]({getting_started_url}) an!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "Wir haben auch eine Anleitung für die [Einrichtung von Zulip für Klassen]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "Wir haben auch eine Anleitung zum [Einrichten deiner Organisation]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Beachte, dass dies eine [Demo-Organisation]({demo_organization_help_url}) ist und in 30 Tagen **automatisch gelöscht** wird."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Hallo, und willkommen bei Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Das ist eine Direktnachricht von mir, dem Welcome Bot."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Ich kann dir auch dabei behilflich sein, alles einzurichten! Klicke einfach irgendwo auf diese Nachricht oder betätige `r`, um zu antworten."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Hier sind ein paar Nachrichten, die ich verstehe:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Du kannst die [mobilen und Desktop-Apps](/apps/) [herunterladen](/apps/). Zulip funktioniert auch gut im Browser."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Geh zu den [Profileinstellungen](#settings/profile), um ein [Profilbild](/help/change-your-profile-picture) hinzuzufügen und deine [Profilinformation](/help/edit-your-profile) zu bearbeiten."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4276,119 +4837,119 @@ msgid ""
 "experience."
 msgstr "Gehe zu [Einstellungen](#settings/preferences), um [zwischen dem hellen und dem dunklen Theme zu wechseln](/help/dark-theme), [dein Lieblingsemoji-Theme auszuwählen](/help/emoji-and-emoticons#change-your-emoji-set), [deine Sprache zu ändern](/help/change-your-language) und andere Anpassungen an deinem Zulip-Erlebnis vorzunehmen."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "Bei Zulip sind es die Streams, die [bestimmen, wer eine Nachricht erhält](/help/streams-and-topics). Sie sind vergleichbar mit Kanälen bei anderen Chat-Apps."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Streams anzeigen und abonnieren](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "Bei Zulip enthalten Themen [eine Angabe darüber, worum es in einer Nachricht geht](/help/streams-and-topics). Sie sind also wie kurze Betreffzeilen, ganz ähnlich wie die Betreffzeile einer E-Mail."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Schau dir die [neuesten Unterhaltungen](#recent) an, um zu sehen, was passiert! Du kannst zu dieser Unterhaltung zurückkehren, indem du oben links auf \"Direktnachrichten\" klickst."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Die [Tastenkürzel](#keyboard-shortcuts) bei Zulip helfen dir bei der schnellen und effizienten Navigation."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Drücke `?`, egal wann, um eine Art [Spickzettel](#keyboard-shortcuts) anzuzeigen."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip nutzt [Markdown](/help/format-your-message-using-markdown), ein intuitives Format für **fett**, *kursiv*, Stichpunktlisten und mehr. Klicke [hier](#message-formatting), um dazu einen Spickzettel anzuzeigen."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Schau dir unsere [Tipps zur Nachrichtenerstellung](/help/messaging-tips) an, um etwas über Emoji-Reaktionen, Code-Blöcke und vieles mehr zu erfahren!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Schau dir unsere [Starthilfe](/help/getting-started-with-zulip) an oder sieh dich im [Hilfecenter](/help/) um, um mehr zu erfahren!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Tut mir leid, ich habe deine Nachricht nicht verstanden. Bitte versuche es mit einem der folgenden Befehle:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Dies ist ein privater Stream, wie an dem Schloss-Icon neben dem Streamnamen zu erkennen ist."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Private Streams sind nur für Mitglieder dieser Streams sichtbar."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Um diesen Stream zu verwalten, gehe zu den [Einstellungen des Streams]({stream_settings_url}) und klicke auf `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Dies ist eine Nachricht im Stream #**{default_notification_stream_name}** mit dem Thema `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Themen sind ein einfaches Tool, mithilfe dessen man Unterhaltungen geordnet halten kann."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "In [Streams und Themen]({about_topics_help_url}) kannst du mehr über Themen lernen."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Dies ist eine Nachricht im Stream #**{default_notification_stream_name}** mit dem Thema `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr "[Beginne ein neues Thema]({start_topic_help_url}) immer, wenn du nicht             auf eine vorherige Nachricht antwortest."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Ungültige JSON-Antwort"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Ungültiges Format der Antwort"
 
@@ -4402,45 +4963,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "Ungültige GCM-Option zum Bouncer: {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token existiert nicht"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "In dieser Organisation wurde die Option, Nachichteninhalte über mobile Push-Benachrichtigungen einzuschließen, deaktiviert."
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} hat @{user_group_name} erwähnt:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} hat dich erwähnt:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} hat alle erwähnt:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Testbenachrichtigung"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr "Dies ist eine Testbenachrichtigung von {realm_name} ({realm_uri})."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Gerät nicht erkannt"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr "Gerät vom Push-Bouncer nicht erkannt"
 
@@ -4452,23 +5013,23 @@ msgstr "Ungültiger Datentyp für Stream ID"
 msgid "Recipient list may only contain user IDs"
 msgstr "Empfängerliste darf nur Nutzer-IDs enthalten"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Nutzer:in für diese Anfrage nicht autorisiert"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' verwendet Zulip nicht mehr."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "Du kannst keine Direktnachrichten außerhalb deiner Organisation senden."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr "Push-Benachrichtigungen-Bouncer-Fehler: {error}"
@@ -4488,21 +5049,21 @@ msgstr "Fehlendes Argument '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Ungültiger Wert für '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Fehlerhafter Payload"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "Argument \"{name}\" ist kein gültiges JSON."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Die geplante Nachricht ist nicht vorhanden"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr "{service_name} Accountsicherheit"
@@ -4539,7 +5100,7 @@ msgstr "Bitte wähle eins aus: 'stream' oder 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Ungültige Stream-ID"
 
@@ -4553,7 +5114,7 @@ msgstr "Stream-Name '{stream_name}' ist bereits vergeben."
 msgid "Invalid stream name '{stream_name}'"
 msgstr "Ungültiger Stream-Name '{stream_name}'"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "Ein Standardstream kann nicht privat sein."
 
@@ -4562,7 +5123,7 @@ msgstr "Ein Standardstream kann nicht privat sein."
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "Stream(s) ({stream_names}) existieren nicht"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Im Netz veröffentlichte Streams sind nicht aktiviert."
 
@@ -4594,28 +5155,28 @@ msgstr "Das Thema kann nicht leer bleiben!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr "Ungültiges Zeichen im Thema an Position {position}!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Daten zu Mitgliedern dieses Streams nicht verfügbar"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Kann Abonnent:innen für den privaten Stream nicht laden"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} ist kein Boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} ist kein Datum"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} ist kein Dict"
@@ -4626,18 +5187,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr "Unerwartetes Argument \"{argument}\" bei {var_name}"
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} ist kein Float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} ist zu klein"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} ist kein Integer"
@@ -4647,24 +5208,24 @@ msgstr "{var_name} ist kein Integer"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} ist kein gültiges JSON"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} ist zu groß"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} ist keine Liste"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Ungültige {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} ist zu lang (Limit: {max_length} Zeichen)"
@@ -4674,8 +5235,8 @@ msgstr "{var_name} ist zu lang (Limit: {max_length} Zeichen)"
 msgid "{var_name} is too short."
 msgstr "{var_name} ist zu kurz."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} ist kein String"
@@ -4694,21 +5255,21 @@ msgstr "Ungültige {var_name}: {msg}"
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Dieser Upload würde das Upload-Budget deiner Organisation überschreiten."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Konnte das Bild nicht dekodieren; hast du eine Bilddatei hochgeladen?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Bildgröße überschreitet das Limit."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Defektes animiertes Bild."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Unbekanntes Format des animierten Bildes."
 
@@ -4765,161 +5326,161 @@ msgstr "Nutzergruppen-Name darf nicht länger als {max_length} Zeichen sein."
 msgid "User group name cannot start with '{prefix}'."
 msgstr "Nutzergruppen-Name darf nicht mit '{prefix}' beginnen."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Name zu lang!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Name zu kurz!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Ungültige Zeichen im Namen!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Ungültiges Format!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Dieser Name wird schon verwendet!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Ungültiger Name oder Nutzername"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "Ungültige Integration '{integration_name}'."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr "Fehlende Konfigurationsparameter: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr "Ungültiger {key}-Wert {value} ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Ungültige Konfigurationsdaten!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Ungültiger Bottyp"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Ungültiger Interface-Typ"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr "Ungültige Nutzer-ID: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Bot nicht vorhanden"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Nutzer:in nicht vorhanden"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Nutzer:in ist deaktiviert"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} darf nicht leer sein."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} hat die ungültige Länge {length}; korrekt ist {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} ist keine bekannte Zeitzone."
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} ist kein gültiger Hex-Farbcode"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} sollte genau aus {length} Elementen bestehen"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "Der Key {key_name} fehlt in {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr "Unerwartete Argumente: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} ist kein allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} ist falsch)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} ist keine URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "Das URL-Muster muss '%(username)s' enthalten."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' darf nicht leer sein."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Das Feld darf keine doppelten Auswahloptionen haben."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' ist keine gültige Option für '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} ist kein String oder Integer-Liste"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} ist kein String oder Integer"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} hat keine Länge"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} fehlt"
@@ -4953,215 +5514,211 @@ msgstr "CSRF-Fehler: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr "Reverse-Proxy-Fehlkonfiguration: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "Stream-Ereignisse"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Auf Zulip Cloud Standard verfügbar. Upgraden, um darauf zuzugreifen."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr "Auf Zulip Cloud Standard verfügbar. Upgrade, um darauf zuzugreifen."
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "GIPHY-Integration deaktiviert"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "GIFs mit der Bewertung \"Y\" zulassen (Level 1: für sehr junges Publikum)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "GIFs mit der Bewertung \"G\" zulassen (Level 2: allgemeines Publikum)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "GIFs mit der Bewertung \"PG\" zulassen (Level 3: Kindersicherung)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "GIFs mit der Bewertung \"PG-13\" zulassen (Level 4: Jugendschutz - unter 13 Jahren)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "GIFs mit der Bewertung \"R\" zulassen (Level 5: nicht für Jugendliche geeignet)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Der Emoji-Name enthält ungültige Zeichen"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr "Ungültiger regulärer Ausdruck: {regex}"
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Fehler: Unbekannter regulärer Ausdruck"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Ungültige URL-Vorlage"
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "Gruppe %(name)r in der URL-Vorlage ist nicht im Linkifier-Muster enthalten."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Gruppe %(name)r im Linkifier-Muster ist nicht in der URL-Vorlage enthalten."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Die pygments Sprache enthält ungültige Zeichen"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr "Erforderliche Variable \"code\" fehlt in der URL-Vorlage"
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr "\"code\" sollte die einzige Variable sein, die in der URL-Vorlage enthalten ist."
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Administrator:innen, Moderator:innen, Mitglieder und Gäste"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Administrator:innen, Moderator:innen und Mitglieder"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Administrator:innen und Moderator:innen"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "nur Administrator:innen"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Niemand"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Unbekannte:r Nutzer:in"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Organisations-Besitzer:in"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Organisations-Administrator:in"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderator:in"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Mitglied"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Gast"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "öffentlich im Netz"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Öffentlich"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Privat, geteilter Verlauf"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Privat, geschützter Verlauf"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Öffentlich, geschützter Verlauf"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Alle Stream-Mitglieder können posten"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Nur Organisations-Administrator:innen können posten"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Nur Organisations-Administrator:innen und Moderator:innen können posten"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Nur vollständige Mitglieder der Organisation können posten"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode Emoji"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Benutzerdefinierte Emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip Extra-Emoji"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr "Nutzer:in mit ID {user_id} ist deaktiviert"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr "Nutzer:in mit ID {user_id} ist ein Bot"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Liste von Optionen"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Personenauswahl"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Kurzer Text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Langer Text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Datum"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Datumsauswahl"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Externer Account"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronomen"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Ungültiger regulärer Ausdruck: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Fehler: Unbekannter regulärer Ausdruck"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Ungültige URL-Vorlage"
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "Gruppe %(name)r in der URL-Vorlage ist nicht im Linkifier-Muster enthalten."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Gruppe %(name)r im Linkifier-Muster ist nicht in der URL-Vorlage enthalten."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode Emoji"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Benutzerdefinierte Emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip Extra-Emoji"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Der Emoji-Name enthält ungültige Zeichen"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Die pygments Sprache enthält ungültige Zeichen"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "Erforderliche Variable \"code\" fehlt in der URL-Vorlage"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "\"code\" sollte die einzige Variable sein, die in der URL-Vorlage enthalten ist."
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "Stream-Ereignisse"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Auf Zulip Cloud Standard verfügbar. Upgraden, um darauf zuzugreifen."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "Auf Zulip Cloud Standard verfügbar. Upgrade, um darauf zuzugreifen."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "GIPHY-Integration deaktiviert"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "GIFs mit der Bewertung \"Y\" zulassen (Level 1: für sehr junges Publikum)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "GIFs mit der Bewertung \"G\" zulassen (Level 2: allgemeines Publikum)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "GIFs mit der Bewertung \"PG\" zulassen (Level 3: Kindersicherung)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "GIFs mit der Bewertung \"PG-13\" zulassen (Level 4: Jugendschutz - unter 13 Jahren)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "GIFs mit der Bewertung \"R\" zulassen (Level 5: nicht für Jugendliche geeignet)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "öffentlich im Netz"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Öffentlich"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Privat, geteilter Verlauf"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Privat, geschützter Verlauf"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Öffentlich, geschützter Verlauf"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Alle Stream-Mitglieder können posten"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Nur Organisations-Administrator:innen können posten"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Nur Organisations-Administrator:innen und Moderator:innen können posten"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Nur vollständige Mitglieder der Organisation können posten"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Administrator:innen, Moderator:innen, Mitglieder und Gäste"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Administrator:innen, Moderator:innen und Mitglieder"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Administrator:innen und Moderator:innen"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "nur Administrator:innen"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Niemand"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Unbekannte:r Nutzer:in"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Organisations-Besitzer:in"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Organisations-Administrator:in"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderator:in"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Mitglied"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Gast"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Unbekannte IP-Adresse"
@@ -5174,20 +5731,20 @@ msgstr "ein unbekanntes Betriebssystem"
 msgid "An unknown browser"
 msgstr "Ein unbekannter Browser"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Fehlendes Argument 'query_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Fehlendes Argument 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Ein neueres Ereignis als {event_id} ist bereits entfernt worden!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Ereignis {event_id} war nicht in dieser Warteschlange enthalten."
@@ -5225,41 +5782,41 @@ msgstr "Das Passwort stimmt nicht."
 msgid "User-Agent header missing from request"
 msgstr "User-Agent Header fehlt im Request."
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Beschriftung darf nicht leer sein."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Feld muss mindestens eine Auswahloption haben."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Feldtyp kann in der Profilzusammenfassung nicht angezeigt werden."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Ungültiger Feldtyp."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Nur 2 benutzerdefinierte Profilfelder können der Profilzusammenfassung angezeigt werden."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Es gibt schon ein Feld mit dieser Beschriftung."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Nutzerdefiniertes Standard-Feld kann nicht aktualisiert werden."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Dieser Endpunkt ist im Betriebsmodus nicht verfügbar."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend ist nicht aktiviert."
 
@@ -5310,7 +5867,7 @@ msgstr "Du musst mindestens eine E-Mail-Adresse angeben."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "Stream mit ID: {stream_id} existiert nicht. Keine Einladungen versendet."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "Du bist nicht berechtigt, andere Nutzer:innen für Streams zu abonnieren."
 
@@ -5359,19 +5916,19 @@ msgstr "Der Anker kann nur am Ende des Bereichs ausgeschlossen werden"
 msgid "No such topic '{topic}'"
 msgstr "Thema '{topic}' nicht vorhanden"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Fehlende:r Absender:in"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Mirroring mit Empfänger-Nutzer-IDs nicht erlaubt"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Ungültige gespiegelte Nachricht"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr-Spiegelung ist in dieser Organisation nicht erlaubt"
 
@@ -5387,42 +5944,46 @@ msgstr "Nutzer:in ist bereits stummgeschaltet"
 msgid "User is not muted"
 msgstr "Nutzer:in ist nicht stummgeschaltet"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Anwesenheitsinformationen werden bei Bots nicht unterstützt."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Keine Anwesenheitsdaten für {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Der Client hat keine neuen Werte übertragen."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Der Client muss emoji_name mitsenden, wenn er entweder emoji_code oder reaction_type sendet."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "Ungültiger Status: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "Ungültige App-ID"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token leer oder Länge ungültig"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Ungültiges APNS Token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "Vom Bouncer zurückgegebener Fehler: {result}"
@@ -5437,55 +5998,55 @@ msgstr "Mindestens eines der folgenden Argumente muss gegeben sein: emoji_name,
 msgid "Read receipts are disabled in this organization."
 msgstr "Empfangsbestätigungen sind in dieser Organisation deaktiviert."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Ungültige Sprache '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Es muss mindestens eine Authentifizierungs-Möglichkeit aktiviert sein."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "Ungültiger video_chat_provider {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "Ungültiges giphy_rating {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Muss eine Demo-Organisation sein."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "Ungültige Domain: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Die Domain {domain} gehört schon zu deiner Organisation."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Keinen Eintrag für die Domain {domain} gefunden."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Du musst genau eine Datei hochladen."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Nur Administrator:innen können die Standard-Emoji überschreiben."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "Hochgeladene Datei ist größer als das erlaubte Maximum von {max_size} MiB"
@@ -5519,7 +6080,7 @@ msgstr "Export läuft noch"
 msgid "You must upload exactly one icon."
 msgstr "Du musst genau ein Icon hochladen."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier nicht gefunden."
 
@@ -5547,71 +6108,71 @@ msgstr "Ungültiges Anfrageformat"
 msgid "Invalid DSN"
 msgstr "Ungültige DSN"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Private Streams können nicht als Standard gesetzt werden."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Du musst \"new_description\" oder \"new_group_name\" übergeben."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Ungültiger Wert für \"op\". Gib \"add\" oder \"remove\" an."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Der Stream hat schon diesen Namen!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Es gibt nichts zu tun. Gib mindestens \"add\" oder \"delete\" an."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} hat dich zum Stream {stream_name} hinzugefügt."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} hat dich zu den folgenden Steams hinzugefügt:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Kann auf Stream ({stream_name}) nicht zugreifen."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Du kannst andere Zephyr-Mirroring-Nutzer:innen nur zu privater Streams einladen."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} hat die folgenden Streams angelegt: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} hat den neuen Stream {stream_str} angelegt."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "Neue Streams"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** Stream erstellt von {user_name}. **Beschreibung:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "Unbekannte Abonnementeigenschaft: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "Stream-ID {stream_id} nicht abonniert"
@@ -5620,7 +6181,7 @@ msgstr "Stream-ID {stream_id} nicht abonniert"
 msgid "Invalid json for submessage"
 msgstr "Ungültiges JSON für Subnachricht"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Du bist nicht dazu autorisiert, auf diese Datei zuzugreifen.
"
 
@@ -5644,112 +6205,112 @@ msgstr "Kein Eintrag für 'to'-Empfänger"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "Nutzer:in hat die Schreibbenachrichtigungen für Direktnachrichten deaktiviert"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr "Diese Datei existiert nicht oder wurde gelöscht.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Ungültiger Token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Ungültiger Dateiname"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Du musst mindestens eine Datei zum Hochladen auswählen"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Du kannst nur eine Datei auf einmal hochladen"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Keine neuen Daten übergeben"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} hat dich zu der Gruppe {group_name} hinzugefügt."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} hat dich aus der Gruppe {group_name} entfernt."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Nutzer:in {user_id} ist bereits Mitglied dieser Gruppe"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "Es gibt kein Mitglied '{user_id}' in dieser Nutzergruppe"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Die Nutzergruppe {group_id} ist bereits eine Untergruppe dieser Gruppe."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "Nutzergruppe {user_group_id} ist bereits eine Untergruppe einer der angegebenen Untergruppen."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Die Nutzergruppe {group_id} ist keine Untergruppe dieser Gruppe."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Änderungen am Avatar sind in dieser Organisation deaktiviert."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Die Änderung von E-Mail-Adressen ist für diese Organisation deaktiviert."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Ungültige default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "Ungültiger Benachrichtigungs-Ton: '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "Ungültiger E-Mail-Batching-Zeitraum: {seconds} Sekunden"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Dein Zulip-Passwort wird von LDAP verwaltet"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Falsches Passwort!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "Du brauchst zu viele Versuche! Versuche es in {seconds} Sekunden erneut."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Neues Passwort ist zu schwach!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Du musst genau einen Avatar hochladen."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Thema ist nicht stummgestellt"
 
@@ -5810,43 +6371,43 @@ msgstr "Wegwerf-E-Mail-Adressen sind in dieser Organisation nicht erlaubt"
 msgid "Email '{email}' already in use"
 msgstr "E-Mail '{email}' wird bereits verwendet"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Ungültiger Zoom-Access-Token"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Die Zoom-Zugangsdaten wurden noch nicht konfiguriert"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Ungültiger Zoom-Session-Identifier"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Ungültige Zoom-Zugangsdaten"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Konnte keinen Anruf über Zoom erstellen"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton wurde noch nicht konfiguriert."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Ungültige Signatur."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Fehler bei der Verbindung zum BigBlueButton-Server."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Fehler bei der Authentifikation am BigBlueButton-Server."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Der BigBlueButton-Server gab eine unerwartete Fehlermeldung zurück."
 
@@ -5879,11 +6440,11 @@ msgstr "Ungültige Payload"
 msgid "Unknown webhook request"
 msgstr "Unbekannte Webhook-Anfrage"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Thema kann nicht leer sein"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Inhalt kann nicht leer sein"
 
@@ -5910,7 +6471,7 @@ msgstr "Der newrelic-Webhook erfordert, dass state eines von [created|activated|
 msgid "Events key is missing from payload"
 msgstr "Events-Key fehlt im Payload"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Pivotal Payload konnte nicht bearbeitet werden"
 
@@ -5927,83 +6488,105 @@ msgstr "Nachricht von Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "Unbekannte WordPress Webhook-Aktion: {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "Dein Datenexport ist abgeschlossen. [Exporte anzeigen und herunterladen]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Ungültige Subdomain für Push-Notification-Bouncer"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Muss mit gültigem Zulip-Server-API-Schlüssel validiert werden."
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Ungültige UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Ungültiger Token-Typ"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} ist kein gültiger Hostname"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "Fehlende ios_app_id"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "Fehlende user_id oder user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr "Dein Tarif erlaubt nicht das Versenden von Push-Benachrichtigungen."
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "Ungültige Eigenschaft {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr "Ungültiger Event-Typ."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Die Daten sind nicht in Ordnung."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "Doppelte Registrierung erkannt."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
-msgstr "Fehler beim Migrieren des:der Kund:in von Server zu Realms. Bitte kontaktiere den Support für Hilfe."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
+msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "Fehlerhafte Audit-Log-Daten"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Du musst dein Passwort zurücksetzen."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Fehlende id_token Parameter"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Ungültiges OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Es geht nicht, gleichzeitig sowohl mobile_flow_otp als auch desktop_flow_otp zu benutzen."
diff --git a/locale/de/translations.json b/locale/de/translations.json
index 0c2a1eb7a1..9846758357 100644
--- a/locale/de/translations.json
+++ b/locale/de/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(angehängte Datei)",
   "(forever)": "(für immer)",
   "(hidden)": "(verborgen)",
-  "(no description)": "(keine Beschreibung)",
   "(no topic)": "(kein Thema)",
   "(or )": "(oder )",
   "(you)": "(du)",
   "({message_retention_days} days)": "({message_retention_days} Tage)",
   "/dark (Switch to the dark theme)": "/dark (zum dunklen Farbschema wechseln)",
   "/light (Switch to light theme)": "/light (zum hellen Farbschema wechseln)",
-  "/me is excited (Display action text)": "/me ist aufgeregt (Aktionstext anzeigen)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Wo sollen wir heute zum Mittagessen hingehen? (Eine Umfrage erstellen)",
-  "/todo (Create a todo list)": "/todo (eine To-Do-Liste erstellen)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 Tag",
   "1 hour": "1 Stunde",
   "1 week": "1 Woche",
@@ -28,7 +27,7 @@
   "6 hours": "6 Stunden",
   "Total messages: {total_messages}": "Gesamtzahl der Nachrichten: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} wird aus den Nachrichten, in denen diese Datei geteilt wurde, entfernt. Dies kann nicht rückgängig gemacht werden.
",
-  "Stream will be announced in #{notifications_stream}.
": "Stream wird in in #{notifications_stream} bekannt gegeben.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Du suchst nach Nachrichten, die von mehr als einer Person gesendet wurden, und das ist nicht möglich.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Du suchst nach Nachrichten, die mehr als nur einem Stream zugeordnet sind, und das ist nicht möglich.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Du suchst nach Nachrichten, die mehr als nur einem Thema zugeordnet sind, und das ist nicht möglich.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Aktivität unbekannt",
   "Add": "Hinzufügen",
   "Add GIF": "GIF einfügen",
+  "Add a description": "",
   "Add a new alert word": "Neues Signalwort hinzufügen",
   "Add a new bot": "Neuen Bot hinzufügen",
   "Add a new code playground": "Neuen Code-Playground hinzufügen",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Bot-E-Mail",
   "Bot email (a-z, 0-9, and dashes only)": "E-Mail-Adresse des Bots (nur a–z, 0–9 und Bindestriche)",
+  "Bot is deactivated": "",
   "Bot owner": "Bot-Besitzer:in",
   "Bot type": "Typ",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Dieses Dialogfenster schließen",
   "Code": "Code",
   "Code playgrounds": "Code-Playgrounds",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Code-Playgrounds sind interaktive Entwicklungsumgebungen im Browser, wie z. B. replit, die das Bearbeiten und Debuggen von Code erleichtern. Über Zulip-Codeblöcken, die mit einer Programmiersprache gekennzeichnet sind, erscheint beim Darüberfahren mit der Maus ein Button, mit dem Nutzer:innen den Codeblock auf der Spielwiesen öffnen können.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Nachrichtenerstellung einklappen",
   "Collapse direct messages": "Direktnachrichten einklappen",
   "Collapse message": "Nachricht einklappen",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Arten der Authentifizierung für deine Organisation konfigurieren.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Stelle die Standardstreams für neue Nutzer:innen ein, die deiner Organisation beitreten.",
   "Confirm": "Bestätigen",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Vielleicht möchtest du alle öffentlichen Streams durchsuchen.",
   "Contact a moderator to resolve this topic.": "Kontaktiere eine:n Moderator:in, um dieses Thema als gelöst zu markieren.",
   "Contact a moderator to unresolve this topic.": "Kontaktiere eine:n Moderator:in, um dieses Thema als ungelöst zu markieren.",
@@ -292,6 +294,7 @@
   "Copy code": "Code kopieren",
   "Copy link": "Link kopieren",
   "Copy link to message": "Link zur Nachricht kopieren",
+  "Copy link to profile": "",
   "Copy link to topic": "Link zum Thema kopieren",
   "Copy mention syntax": "Erwähnungs-Syntax kopieren",
   "Copy version": "Version kopieren",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Alle Entwürfe löschen",
   "Delete all selected drafts": "Alle ausgewählten Entwürfe löschen",
   "Delete code playground?": "Code-Playground löschen?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Benutzerdefiniertes Profilfeld löschen?",
   "Delete data export?": "Datenexport löschen?",
   "Delete draft": "Entwurf löschen",
@@ -413,7 +417,6 @@
   "Domain": "Domain",
   "Don’t allow disposable email addresses": "Keine Wegwerf-E-Mail-Adressen erlauben",
   "Download": "Download",
-  "Download .zuliprc": ".zuliprc herunterladen",
   "Download botserverrc": "botserverrc herunterladen",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Konfigurationsdatei für alle aktiven Outgoing Webhook Bots herunterladen.",
   "Download file": "Datei herunterladen",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Bildung (gewinnorientiert)",
   "Education (non-profit)": "Bildung (gemeinnützig)",
   "Effect": "Effekt",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-Mail",
   "Email address": "E-Mail-Adresse",
   "Email address changes are disabled in this organization.": "Die Änderung von E-Mail-Adressen ist für diese Organisation deaktiviert.",
@@ -550,7 +554,7 @@
   "Follow": "Folgen",
   "Followed": "Gefolgt",
   "Followed topics": "Gefolgte Themen",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Um zum Beispiel einen Code-Playground für Codeblöcke zu konfigurieren, die als Python gekennzeichnet sind, kannst du einstellen:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Weitere Beispiele und technische Details findest du in der Hilfecenter-Dokumentation zum Hinzufügen von Code-Playgrounds.",
   "For more examples, see the help center documentation on adding linkifiers.": "Weitere Beispiele findest du in der Hilfecenter-Dokumentation zum Hinzufügen von Linkifiern.",
   "Forgot it?": "Passwort vergessen?",
@@ -606,6 +610,8 @@
   "Image": "Bild",
   "In a meeting": "In einem Meeting",
   "In muted streams, stream notification settings apply only to unmuted topics.": "In stummgeschalteten Streams gelten die Stream-Benachrichtigungseinstellungen nur für lautgeschaltete Themen.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inaktiv",
   "Inactive bots": "Inaktive Bots",
   "Inbox": "Eingang",
@@ -704,9 +710,11 @@
   "Manage this bot": "Diesen Bot verwalten",
   "Manage this user": "Nutzer:in verwalten",
   "Manage user": "Nutzer:in verwalten",
+  "Manage your API key": "",
   "March": "März",
   "Mark all messages as read": "Alle Nachrichten als gelesen markieren",
   "Mark all messages as read?": "Alle Nachrichten als gelesen markieren?",
+  "Mark all messages as unread": "",
   "Mark as read": "Als gelesen markieren",
   "Mark as resolved": "Als gelöst markieren",
   "Mark as unread from here": "Ab hier als ungelesen markieren",
@@ -722,6 +730,7 @@
   "Mentioned in": "Erwähnt in",
   "Mentions": "Erwähnungen",
   "Menus": "Menüs",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Nachricht an #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Nachricht an #{stream_name} > {topic_name}",
   "Message actions": "Aktionen",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Nachricht an {recipient_label}",
   "Message {recipient_names}": "Nachricht an {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Nachricht an {recipient_names} ({recipient_status})",
+  "Messages": "Nachrichten",
   "Messages in all public streams": "Nachrichten in allen öffentlichen Streams",
   "Messages sent by you": "Von dir gesendete Nachrichten",
   "Messages sent by {sender}": "Von {sender} gesendete Nachrichten",
@@ -805,6 +815,7 @@
   "Never expires": "Läuft nie ab",
   "New": "Neu",
   "New direct message": "Neue Direktnachricht",
+  "New direct message from {sender_full_name}": "",
   "New email": "Neue E-Mail",
   "New message": "Neue Nachricht",
   "New option": "Neue Option",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Nächste ungelesene Direktnachricht",
   "Next unread followed topic": "Nächstes ungelesenes gefolgtes Thema",
   "Next unread topic": "Nächstes ungelesenes Thema",
-  "No bots found.": "Keine Bots gefunden.",
+  "No active users.": "",
   "No bots match your current filter.": "Keine Bots entsprechen deinem aktuellen Filter.",
   "No conversations match your filters.": "Keine Unterhaltungen entsprechen deinen Filtern.",
-  "No custom emojis found.": "Keine benutzerdefinierten Emojis gefunden.",
   "No custom emojis match your current filter.": "Keine benutzerdefinierten Emojis entsprechen deinem aktuellen Filter.",
   "No custom profile field configured for this organization.": "Für diese Organisation ist kein benutzerdefiniertes Profilfeld konfiguriert.",
-  "No deactivated users found.": "Keine deaktivierten Nutzer:innen gefunden.",
-  "No default streams found.": "Keine Standardstreams gefunden.",
   "No default streams match your current filter.": "Keine Standardstreams entsprechen deinem aktuellen Filter.",
   "No description.": "Keine Beschreibung.",
   "No drafts selected": "Keine Entwürfe ausgewählt",
   "No drafts.": "Keine Entwürfe.",
-  "No exports found.": "Keine Exporte gefunden.",
   "No group members match your current filter.": "Keine Gruppenmitglieder entsprechen deinem aktuellen Filter.",
-  "No invites found.": "Keine Einladungen gefunden.",
   "No invites match your current filter.": "Keine Einladungen entsprechen deinem aktuellen Filter.",
   "No language set": "Keine Sprache festgelegt",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "Keine Linkifier entsprechen deinem aktuellen Filter.",
-  "No linkifiers set.": "Keine Linkifiers gesetzt.",
   "No matching results": "Keine passenden Ergebnisse",
   "No matching streams": "Keine passenden Streams",
   "No matching users.": "Keine passenden Nutzer:innen.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Keine Themen wurden als gelöst markiert.",
   "No topics match your current filter.": "Keine Themen entsprechen deinem aktuellen Filter.",
   "No uploaded files match your current filter.": "Keine hochgeladenen Dateien entsprechen deinem aktuellen Filter.",
+  "No user found": "",
   "No user group subscriptions.": "Keine Nutzergruppen abonniert.",
   "No user groups": "Keine Nutzergruppen",
   "No user to subscribe.": "Kein:e Nutzer:in zum Abonnieren.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Niemand in dieser Zulip-Organisation kann diese E-Mail-Adresse sehen.",
   "Non-profit (registered)": "Gemeinnützig (registriert)",
   "None": "Keine",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Beachte, dass alle deine Bots deaktiviert werden.",
   "Note that organizations are limited to five exports per week.": "Beachte, dass je Organisation höchstens fünf Exporte pro Woche möglich sind.",
   "Nothing to preview": "Keine Vorschau vorhanden",
@@ -932,6 +940,7 @@
   "Other permissions": "Andere Berechtigungen",
   "Other settings": "Andere Einstellungen",
   "Other users in this Zulip organization will be able to see this email address.": "Andere Nutzer:innen dieser Zulip-Organisation können diese E-Mail-Adresse sehen.",
+  "Others": "",
   "Out sick": "Krank",
   "Outgoing webhook message format": "Outgoing Webhook Nachrichtenformat",
   "Override default emoji?": "Standard-Emoji überschreiben?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Angabe von Themen in Nachrichten an Streams erzwingen",
   "Research": "Forschung",
   "Resend": "Erneut senden",
-  "Resend invitation": "Einladung nochmals senden",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Es ist ein Fehler beim erneuten Versenden aufgetreten. Bitte lade die Seite neu und versuche es nochmal.",
+  "Reset to default notifications": "",
   "Reset zoom": "Vergrößerung zurücksetzen",
   "Restore draft": "Entwurf wiederherstellen",
   "Restrict email domains of new users?": "E-Mail-Domains neuer Nutzer:innen beschränken?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Nach  im Thema oder im Inhalt von Nachrichten suchen.",
   "Search people": "Personen suchen",
   "Search results": "Suchergebnisse",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "So konfigurierst du die E-Mails.",
   "Select a stream": "Wähle einen Stream",
   "Select a stream below or change topic name.": "Wähle unten einen Stream oder ändere den Themennamen",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Anzahl der markierten Nachrichten anzeigen",
   "Show status text": "Statustext anzeigen",
   "Show unread counts for": "Zeige Ungelesen-Markierungen für",
-  "Show/change your API key": "API-Schlüssel anzeigen/ändern",
   "Showing messages since {time_string}.": "Zeige Nachrichten seit {time_string}.",
   "Sign up": "Registrieren",
   "Silent mentions do not trigger notifications.": "Stumme Erwähnungen lösen keine Benachrichtigungen aus.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "Die E-Mail-Adresse des Absenders",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "Der Stream #{stream_name} existiert nicht. Verwalte deine Abonnements auf deiner Stream-Seite.",
   "The stream description cannot contain newline characters.": "Die Streambeschreibung darf keine Zeichen mit Zeilenumbruch enthalten.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Sein:ihr Passwort wird aus unseren Systemen gelöscht und alle Bots, die sie:er betreibt, werden deaktiviert.",
   "Theme": "Farbschema",
+  "There are no bots.": "",
   "There are no current alert words.": "Es gibt derzeit keine Signalwörter.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Hier gibt es keine Nachrichten.",
   "There are no streams you can view in this organization.": "In dieser Organisation gibt es keine Streams, die du anzeigen kannst.",
   "There are no unread messages in your inbox.": "Dein Eingang enthält keine ungelesenen Nachrichten.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Dieser Bot kann nicht deaktiviert werden.",
   "This bot cannot be edited.": "Dieser Bot kann nicht bearbeitet werden.",
   "This bot has been deactivated.": "Dieser Bot ist deaktiviert worden.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "Diese Unterhaltung könnte weitere Nachrichten enthalten, die in dieser Ansicht nicht angezeigt werden.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Diese Demo-Organisation wird automatisch in {days_remaining} Tagen gelöscht, wenn sie nicht in eine dauerhafte Organisation1 umgewandelt wird.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "Diese Funktion ist auf Zulip Cloud Plus verfügbar. Upgrade, um darauf zuzugreifen.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Dadurch wird das -Profilfeld für  Nutzer:innen geleert.",
   "This will delete the  profile field for 1 user.": "Dadurch wird das -Profilfeld für 1 Nutzer:in gelöscht.",
   "This will delete the  profile field for  users.": "Dadurch wird das -Profilfeld für  Nutzer:innen gelöscht.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Donnerstag",
   "Time": "Zeitpunkt",
   "Time format": "Zeitformat",
@@ -1240,6 +1259,7 @@
   "Today": "Heute",
   "Today at {time}": "Heute um {time} Uhr",
   "Toggle first emoji reaction on selected message": "Erste Emoji-Reaktion auf ausgewählte Nachricht umschalten",
+  "Toggle preview mode": "",
   "Toggle subscription": "Abonnierung umschalten",
   "Toggle the gear menu": "Zahnrad-Menü umschalten",
   "Toggle topic mute": "Stummschaltung des Themas umschalten",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "Du bist nicht berechtigt, andere Nutzer:innen zu Streams in dieser Organisation hinzuzufügen.",
   "You do not have permission to join this group.": "Du bist nicht berechtigt, dieser Gruppe beizutreten.",
   "You do not have permission to leave this group.": "Du bist nicht berechtigt, diese Gruppe zu verlassen.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Du bist nicht berechtigt, einige der Nachrichten in diesem Thema zu verschieben. Kontaktiere eine:n Moderator:in, um alle Nachrichten zu verschieben.",
   "You do not have permission to post in this stream.": "Du bist nicht berechtigt, in diesem Stream zu schreiben.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "Du bist nicht berechtigt, Themen mit Nachrichten, die älter als {N, plural, one {# day} other {# days}} sind, in dieser Organisation zu verschieben.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Zulip Server {display_version}",
   "Zulip Server {display_version} (modified)": "Zulip Server {display_version} (modifiziert)",
   "Zulip Server {display_version} (patched)": "Zulip Server {display_version} (mit Patch)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "Mit Zulip kannst du Benachrichtigungen für jedes Thema konfigurieren. Außerdem kannst du Themen, die du beginnst oder an denen du teilnimmst, automatisch folgen oder lautschalten.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Mit Zulip kannst du Themen und Streams stummschalten, damit du keine Benachrichtigungen erhältst, die dich nicht interessieren. Das Stummschalten eines Streams schaltet alle Themen in diesem Stream stumm. Du kannst ein Thema in einem lautgeschalteten Stream auch manuell stummschalten oder ein Thema in einem stummgeschalteten Stream lautschalten. Mehr erfahren.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip muss E-Mails senden können, um die E-Mail-Adressen von Nutzer:innen zu verifizieren und Benachrichtigungen zu versenden.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip benötigt deine Erlaubnis, um Desktop-Benachrichtigungen zu aktivieren.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Die Übersetzungen von Zulip werden von unserer wunderbaren Gemeinschaft freiwilliger Übersetzer:innen beigesteuert. Wenn du helfen möchtest, schau dir bitte die Richtlinien für die Übersetzung von Zulip an.",
@@ -1541,6 +1561,9 @@
   "more topics": "weitere Themen",
   "she/her": "sie/ihr",
   "they/them": "they/them",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Erledigt! {N} Nachricht wurde als gelesen markiert.} other {Erledigt! {N} Nachrichten wurden als gelesen markiert.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Erledigt! {N} Nachricht wurde als ungelesen markiert.} other {Erledigt! {N} Nachrichten wurden als ungelesen markiert.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {Nutzer:in erfolgreich eingeladen.} other {Nutzer:innen erfolgreich eingeladen.}}",
diff --git a/locale/en_GB/LC_MESSAGES/django.po b/locale/en_GB/LC_MESSAGES/django.po
index decdc5567b..faf4a64941 100644
--- a/locale/en_GB/LC_MESSAGES/django.po
+++ b/locale/en_GB/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: David Wood , 2022-2023\n"
 "Language-Team: English (United Kingdom) (http://app.transifex.com/zulip/zulip/language/en_GB/)\n"
@@ -21,57 +21,51 @@ msgstr ""
 "Language: en_GB\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Not allowed for guest users"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Invalid organisation"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Public streams"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Private streams"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Direct messages"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Group direct messages"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Missing stream for chart: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Unknown chart name: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Start time is later than end time. Start: {start}, End: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "No analytics data available. Please contact your server administrator."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Invalid parameters"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -80,7 +74,7 @@ msgid ""
 "users to join."
 msgstr "Your organisation has no Zulip licenses remaining and can no longer accept new users. Please [increase the number of licenses]({billing_page_link}) or [deactivate inactive users]({deactivate_user_help_page_link}) to allow new users to join."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -89,7 +83,7 @@ msgid ""
 "join."
 msgstr "Your organisation has only one Zulip license remaining. You can [increase the number of licenses]({billing_page_link}) or [deactivate inactive users]({deactivate_user_help_page_link}) to allow more than one user to join."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -98,7 +92,7 @@ msgid ""
 "join."
 msgstr "Your organisation has only two Zulip licenses remaining. You can [increase the number of licenses]({billing_page_link}) or [deactivate inactive users]({deactivate_user_help_page_link}) to allow more than two users to join."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -107,7 +101,7 @@ msgid ""
 "join."
 msgstr "Your organisation has only three Zulip licenses remaining. You can [increase the number of licenses]({billing_page_link}) or [deactivate inactive users]({deactivate_user_help_page_link}) to allow more than three users to join."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -116,11 +110,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "A new member ({email}) was unable to join your organisation because all Zulip licenses are in use. Please [increase the number of licenses]({billing_page_link}) or [deactivate inactive users]({deactivate_user_help_page_link}) to allow new members to join."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "All Zulip licenses for this organisation are currently in use."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -136,124 +130,124 @@ msgstr "Registration is deactivated"
 msgid "Invalid remote server."
 msgstr "Invalid remote server."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "You must purchase licenses for all active users in your organisation (minimum {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Invoices with more than {max_licenses} licences can't be processed from this page. To complete the upgrade, please contact {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "No payment method on file."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} ending in {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Unknown payment method. Please contact {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Something went wrong. Please contact {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Something went wrong. Please reload the page."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Something went wrong. Please wait a few seconds and try again."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Please add a credit card before starting your free trial."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "Please add a credit card to schedule upgrade."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Unable to update the plan. The plan has been expired and replaced with a new plan."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Unable to update the plan. The plan has ended."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "Cannot update licenses in the current billing period for free trial plan."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Unable to update licenses manually. Your plan is on automatic license management."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Your plan is already on {licenses} licenses in the current billing period."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "You cannot decrease the licenses in the current billing period."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr "Cannot change the licenses for next billing cycle for a plan that is being downgraded."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Your plan is already scheduled to renew with {licenses_at_next_renewal} licenses."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Nothing to change."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "No customer for this organisation!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Session not found"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Must be a billing administrator or an organisation owner"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Payment intent not found"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -261,54 +255,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Your organisation's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n\nIf you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr "Parameter 'confirmed' is required"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "Billing access token expired."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Invalid billing access token."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr "Failed to migrate customer from server to realms. Please contact support for assistance."
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr "User account doesn't exist yet."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "You must accept the Terms of Service to proceed."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr "This zulip_org_id is not registered with Zulip's billing management system."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr "Invalid zulip_org_key for this zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "Your server registration has been deactivated."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Invalid parameters"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Error"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Method not allowed (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Page not found (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -317,8 +318,41 @@ msgid ""
 "                        "
 msgstr "\n                        If this error is unexpected, you can\n                        contact support.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Method not allowed (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Internal server error"
 
@@ -423,7 +457,7 @@ msgstr "15 day actives"
 msgid "Total users"
 msgstr "Total users"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Users"
 
@@ -563,37 +597,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Make sure you copied the link correctly in to your browser. If you're still encountering this page, it's probably our fault. We're sorry."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Billing"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Close modal"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Never mind"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Downgrade"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Cancel"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Downgrade"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirm"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr "Cancel upgrade"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Billing status"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Deactivate server registration?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr "Plan management not available"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr " Plan management is not available for this\n                        organisation, because your Zulip server is already on a\n                        %(server_plan_name)s plan, which covers all\n                        organisations on this server. Follow the log\n                        in instructions\n                        for All older versions\n                        of the Zulip server to manage your plan.\n                        "
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr " To move the plan from the server to this\n                        organisation, or for other questions, contact support.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr "\n                        Plan management for this server is not available because at least one organisation\n                        hosted on this server already has an active plan.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr "\n                        Log in to plan management for your\n                        organisation instead, or contact support with any questions.\n                        "
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Rate limit exceeded"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Rate limit exceeded."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "You can try again in %(retry_after)s seconds."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Upgrade"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Convert demo organisation before upgrading."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -614,6 +744,451 @@ msgstr "Categories"
 msgid "All"
 msgstr "All"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr "Unlimited"
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr "Supported"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr "Self-managed"
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr "For organisations with up to 10 users"
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr "Not available"
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "The Zulip development community"
@@ -633,11 +1208,7 @@ msgstr "Join as a self-hoster"
 msgid "Join as a contributor"
 msgstr "Join as a contributor"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Billing status"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -652,12 +1223,12 @@ msgstr "Billing status"
 msgid "Create organization"
 msgstr "Create organisation"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Plans & pricing"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -690,51 +1261,48 @@ msgstr "Education pricing"
 msgid "View pricing"
 msgstr "View pricing"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr "Deactivate server registration?"
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip for business"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contact support"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "From"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisation"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Subject"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Message"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Submit"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Thanks for contacting us"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Thanks for contacting us!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "We will be in touch with you soon."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -750,14 +1318,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Try Zulip now"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Upgrade"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Convert demo organisation before upgrading."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -805,7 +1365,7 @@ msgstr "Continue"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Sign up"
 
@@ -838,8 +1398,8 @@ msgstr "Already have an account?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Log in"
 
@@ -872,26 +1432,22 @@ msgstr "If this message does not go away, try reloading<
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Error loading Zulip. Try reloading the page."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Unable to connect to Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Updates may be delayed."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Retrying soon…"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Try now."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Messages"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Authentication subdomain error"
@@ -1114,21 +1670,21 @@ msgstr "Guest users"
 msgid "Normal users"
 msgstr "Normal users"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "Forward emails to an email account"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Close"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Update"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2351,8 +2907,8 @@ msgstr "Your request for Zulip sponsorship has been approved! Your organisation
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
-msgstr "If you could list Zulip as a sponsor on your website, we would really appreciate it!."
+"appreciate it!"
+msgstr "If you could list Zulip as a sponsor on your website, we would really appreciate it!"
 
 #: templates/zerver/find_account.html:4
 msgid "Find your accounts"
@@ -2371,7 +2927,16 @@ msgid ""
 "                    "
 msgstr "\n                    Emails sent! You will only receive emails at addresses\n                    associated with Zulip organisations. The addresses entered\n                    on the previous page are listed below:\n                    "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2381,12 +2946,12 @@ msgid ""
 "                    "
 msgstr "\n                    Enter your email address to receive an email with the URLs\n                    for all the Zulip Cloud organisations in which you have\n                    active accounts. If you have also forgotten your password,\n                    you can reset it.\n                    "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Email address"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Find accounts"
 
@@ -2418,7 +2983,7 @@ msgstr "Integrations"
 msgid "Desktop & mobile apps"
 msgstr "Desktop & mobile apps"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "New organisation"
 
@@ -2786,13 +3351,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Please contact the person who invited you and ask them to increase the number of licenses, then try again."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Rate limit exceeded"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2800,11 +3361,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "You have exceeded the limit for how\n                        often a user can perform this action."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "You can try again in %(retry_after)s seconds."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2973,6 +3529,22 @@ msgstr "What are you interested in?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr "Unexpected Zulip server registration"
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr "\n                        Your Zulip organisation is registered as associated with a\n                        different Zulip server installation.\n\n                        Please contact Zulip support\n                        for assistance in resolving this issue.\n                        "
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Reset your password"
@@ -3130,123 +3702,107 @@ msgid ""
 "                        "
 msgstr "\n                        You can also use the Zulip desktop app.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr "Unexpected Zulip server registration"
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr "\n                        Your Zulip organisation is registered as associated with a\n                        different Zulip server installation.\n\n                        Please contact Zulip support\n                        for assistance in resolving this issue.\n                        "
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "signups"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} accepted your invitation to join Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "Cannot activate a placeholder account; ask the user to sign up, instead."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Invalid order mapping."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Field id {id} not found."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "Invalid default stream group name '{group_name}'"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr "Default stream group name too long (limit: {max_length} characters)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr "Default stream group name '{group_name}' contains NULL (0x00) characters."
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr "Invalid default stream group {group_name}"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Default stream group '{group_name}' already exists"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Stream '{stream_name}' is already present in default stream group '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr "This default stream group is already named '{group_name}'"
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "To protect users, Zulip limits the number of invitations you can send in one day. Because you have reached the limit, no invitations were sent."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Your account is too new to send invites for this organisation. Ask an organisation admin, or a more experienced user."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Some emails did not validate, so we didn't send any invitations."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "We weren't able to invite anyone."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3276,72 +3832,72 @@ msgstr "Cannot change message content while changing stream"
 msgid "Widgets cannot be edited."
 msgstr "Widgets cannot be edited."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Your organisation has turned off message editing"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "You don't have permission to edit this message"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "The time limit for editing this message has passed"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} has marked this topic as resolved."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} has marked this topic as unresolved."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "This topic was moved to {new_location} by {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "A message was moved from this topic to {new_location} by {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} messages were moved from this topic to {new_location} by {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "This topic was moved here from {old_location} by {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[A message]({message_link}) was moved here from {old_location} by {user}."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} messages were moved here from {old_location} by {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Your organisation has turned off message editing"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "You don't have permission to edit this message"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "The time limit for editing this message has passed"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "The time limit for editing this message's topic has passed."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "You don't have permission to move this message"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "The time limit for editing this message's stream has passed"
 
@@ -3360,137 +3916,142 @@ msgstr "Flag not editable: '{flag}'"
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "Invalid message flag operation: '{operation}'"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Invalid message(s)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Unable to render message"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Expected exactly one stream"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Invalid data type for stream"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Invalid data type for recipients"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Recipient lists may contain emails or user IDs, but not both."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, but there is no stream with that ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Your bot {bot_identity} tried to send a message to stream {stream_name}, but that stream does not exist. Click [here]({new_stream_link}) to create it."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Your bot {bot_identity} tried to send a message to stream {stream_name}. The stream exists but does not have any subscribers."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Direct messages are disabled in this organisation."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr "You do not have permission to access some of the recipients."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Topics are required in this organisation"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: API programmer sent invalid JSON content"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "A custom emoji with this name already exists."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr "The ordered list must not contain duplicated linkifiers"
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr "The ordered list must enumerate all existing linkifiers exactly once"
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Scheduled message was already sent"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "Scheduled delivery time must be in the future."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Message could not be sent at the scheduled time."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "The message you scheduled for {delivery_datetime} was not sent because of the following error:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[View scheduled messages](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Stream is already deactivated"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Stream is not currently deactivated"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Stream named {stream_name} already exists"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "Stream {stream_name} un-archived."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} changed the [access permissions](/help/stream-permissions) for this stream from **{old_policy}** to **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3499,38 +4060,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n\n* **Old permissions**: {old_policy}.\n* **New permissions**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "No description."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} changed the description for this stream."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Old description"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "New description"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Forever"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Messages in this stream will now be retained forever."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3544,7 +4105,7 @@ msgstr "{user} has changed the [message retention period](/help/message-retentio
 msgid "You cannot attach a submessage to this message."
 msgstr "You cannot attach a submessage to this message."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr "Invalid user ID {user_id}"
@@ -3554,187 +4115,187 @@ msgstr "Invalid user ID {user_id}"
 msgid "User group '{group_name}' already exists."
 msgstr "User group '{group_name}' already exists."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "This API is not available to incoming webhook bots."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Account is not associated with this subdomain"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "This endpoint does not accept bot requests."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Must be an server administrator"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Insufficient permission"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "This endpoint requires HTTP basic authentication."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Invalid authorisation header for basic auth"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Missing authorisation header for basic auth"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook bots can only access webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Your account {username} has been deactivated. Please contact your organisation administrator to reactivate it."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "The password is too weak."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomain needs to have length 3 or greater."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomain cannot start or end with a '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomain can only have lowercase letters, numbers, and '-'s."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Subdomain already in use. Please choose a different one."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Subdomain reserved. Please choose a different one."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Please use your real email address."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "The organisation you are trying to join using {email} does not exist."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Please request an invite for {email} from the organisation administrator."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Your email address, {email}, is not in one of the domains that are allowed to register for accounts in this organisation."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Email addresses containing + are not allowed in this organisation."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "New members cannot join this organisation because all Zulip licenses are in use. Please contact the person who invited you and ask them to increase the number of licenses, then try again."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "New password"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "New password confirmation"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr "You're making too many attempts to sign in. Try again in {seconds} seconds or contact your organisation administrator for help."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Your password has been disabled because it is too weak. Reset your password to create a new one."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Tip: You can enter multiple email addresses with commas between them."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Please enter at most 10 emails."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "We couldn't find that Zulip organisation."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Invalid email '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Missing topic"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Cannot send to multiple streams"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Missing stream"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Message must have recipients"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Invalid message type"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Invalid attachment"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "An error occurred while deleting the attachment. Please try again later."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Message must have recipients!"
 
@@ -3791,88 +4352,88 @@ msgstr "User has disabled synchronizing drafts."
 msgid "Draft does not exist"
 msgstr "Draft does not exist"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Open Zulip to see the spoiler content"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr "{service_name} notifications"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Invalid address."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Outside your domain."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Email addresses containing + are not allowed."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Reserved for system bots."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} already has an account"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Already has an account."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Account has been deactivated."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "Emoji '{emoji_name}' does not exist"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Invalid custom emoji."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Invalid custom emoji name."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "This custom emoji has been deactivated."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Invalid emoji code."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Invalid emoji name."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Invalid emoji type."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Must be an organisation administrator or emoji author"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Emoji names must end with either a letter or digit."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Emoji names must contain only lowercase English letters, digits, spaces, dashes, and underscores."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Emoji name is missing"
 
@@ -3880,119 +4441,119 @@ msgstr "Emoji name is missing"
 msgid "Could not allocate event queue"
 msgstr "Could not allocate event queue"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Not logged in: API authentication or user session required"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Stream '{stream}' does not exist"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Stream with ID '{stream_id}' does not exist"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "organisation owner"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "user"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Cannot deactivate the only {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Invalid Markdown include statement: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API usage exceeded rate limit"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Malformed JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Must be an organisation member"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Must be an organisation administrator"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Must be an organisation owner"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Your username or password is incorrect"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Account is deactivated"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "This organisation has been deactivated"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "The mobile push notification service registration for your server has been deactivated"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Password authentication is disabled in this organisation"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Your password has been disabled and needs to be reset"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Invalid API key"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Malformed API key"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr "The '{event_type}' event isn't currently supported by the {webhook_name} webhook; ignoring"
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Unable to parse request: Did {webhook_name} generate this event?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "User not authenticated"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Invalid subdomain"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Access denied"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4000,47 +4561,47 @@ msgid ""
 "messages in this topic."
 msgstr "You only have permission to move the {total_messages_allowed_to_move}/{total_messages_in_topic} most recent messages in this topic."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reaction already exists."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reaction doesn't exist."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr "Your organisation is registered to a different Zulip server. Please contact Zulip support for assistance in resolving this issue."
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr "Organisation not registered"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "You do not have permission to use stream wildcard mentions in this stream."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "You do not have permission to use topic wildcard mentions in this topic."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitter username"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "GitHub username"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Custom external account must define URL pattern"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Invalid external account type"
 
@@ -4138,106 +4699,106 @@ msgstr "Productivity"
 msgid "Version control"
 msgstr "Version control"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Message must not be empty"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Message must not contain null bytes"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr "You are not allowed to mention user group '{user_group_name}'. You must be a member of '{can_mention_group_name}' to mention this group."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr "Operator {operator} not supported."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Invalid narrow operator: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Missing 'anchor' argument."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Invalid anchor"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "If you are new to Zulip, check out our [Using Zulip for a class guide]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "If you are new to Zulip, check out our [Getting started guide]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "We also have a guide for [Setting up Zulip for a class]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "We also have a guide for [Setting up your organisation]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Note that this is a [demo organisation]({demo_organization_help_url}) and will be **automatically deleted** in 30 days."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Hello, and welcome to Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "This is a direct message from me, Welcome Bot."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "I can also help you get set up! Just click anywhere on this message or press `r` to reply."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Here are a few messages I understand:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also works great in a browser."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/change-your-profile-picture) and edit your [profile information](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4246,119 +4807,119 @@ msgid ""
 "experience."
 msgstr "Go to [Preferences](#settings/preferences) to [switch between the light and dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-and-emoticons#change-your-emoji-set), [change your language](/help/change-your-language), and make other tweaks to your Zulip experience."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "In Zulip, streams [determine who gets a message](/help/streams-and-topics). They are similar to channels in other chat apps."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Browse and subscribe to streams](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "In Zulip, topics [tell you what a message is about](/help/streams-and-topics). They are light-weight subjects, very similar to the subject line of an email."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Check out [Recent conversations](#recent) to see what's happening! You can return to this conversation by clicking \"Direct messages\" in the upper left."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app quickly and efficiently."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip uses [Markdown](/help/format-your-message-using-markdown), an intuitive format for **bold**, *italics*, bulleted lists, and more. Click [here](#message-formatting) for a cheat sheet."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Check out our [messaging tips](/help/messaging-tips) to learn about emoji reactions, code blocks and much more!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Check out our [Getting started guide](/help/getting-started-with-zulip), or browse the [Help center](/help/) to learn more!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "I’m sorry, I did not understand your message. Please try one of the following commands:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "This is a private stream, as indicated by the lock icon next to the stream name."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Private streams are only visible to stream members."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "To manage this stream, go to [Stream settings]({stream_settings_url}) and click on `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "This is a message on stream #**{default_notification_stream_name}** with the topic `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Topics are a lightweight tool to keep conversations organised."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "You can learn more about topics at [Streams and topics]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "This is a message on stream #**{default_notification_stream_name}** with the topic `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr "[Start a new topic]({start_topic_help_url}) any time you're not replying to a             previous message."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Invalid JSON in response"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Invalid response format"
 
@@ -4372,45 +4933,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "Invalid GCM options to bouncer: {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token does not exist"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "This organisation has disabled including message content in mobile push notifications"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} mentioned @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} mentioned you:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} mentioned everyone:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Test notification"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr "This is a test notification from {realm_name} ({realm_uri})."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Device not recognized"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr "Device not recognized by the push bouncer"
 
@@ -4422,23 +4983,23 @@ msgstr "Invalid data type for stream ID"
 msgid "Recipient list may only contain user IDs"
 msgstr "Recipient list may only contain user IDs"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "User not authorised for this query"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' is no longer using Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "You can't send direct messages outside of your organisation."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr "Push notifications bouncer error: {error}"
@@ -4458,21 +5019,21 @@ msgstr "Missing '{var_name}' argument"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Bad value for '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Malformed payload"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "Argument \"{name}\" is not valid JSON."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Scheduled message does not exist"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr "{service_name} account security"
@@ -4509,7 +5070,7 @@ msgstr "Please choose one: 'stream' or 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Invalid stream ID"
 
@@ -4523,7 +5084,7 @@ msgstr "Stream name '{stream_name}' is already taken."
 msgid "Invalid stream name '{stream_name}'"
 msgstr "Invalid stream name '{stream_name}'"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "A default stream cannot be private."
 
@@ -4532,7 +5093,7 @@ msgstr "A default stream cannot be private."
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "Stream(s) ({stream_names}) do not exist"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Web-public streams are not enabled."
 
@@ -4564,28 +5125,28 @@ msgstr "Topic can't be empty!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr "Invalid character in topic, at position {position}!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Subscriber data is not available for this stream"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Unable to retrieve subscribers for private stream"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} is not a boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} is not a date"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} is not a dict"
@@ -4596,18 +5157,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr "Argument \"{argument}\" at {var_name} is unexpected"
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} is not a float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} is too small"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} is not an integer"
@@ -4617,24 +5178,24 @@ msgstr "{var_name} is not an integer"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} is not valid JSON"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} is too large"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} is not a list"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Invalid {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} is too long (limit: {max_length} characters)"
@@ -4644,8 +5205,8 @@ msgstr "{var_name} is too long (limit: {max_length} characters)"
 msgid "{var_name} is too short."
 msgstr "{var_name} is too short."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} is not a string"
@@ -4664,21 +5225,21 @@ msgstr "Invalid {var_name}: {msg}"
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Upload would exceed your organisation's upload quota."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Could not decode image; did you upload an image file?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Image size exceeds limit."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Corrupt animated image."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Unknown animated image format."
 
@@ -4735,161 +5296,161 @@ msgstr "User group name cannot exceed {max_length} characters."
 msgid "User group name cannot start with '{prefix}'."
 msgstr "User group name cannot start with '{prefix}'."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Name too long!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Name too short!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Invalid characters in name!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Invalid format!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Name is already in use!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Bad name or username"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "Invalid integration '{integration_name}'."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr "Missing configuration parameters: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr "Invalid {key} value {value} ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Invalid configuration data!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Invalid bot type"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Invalid interface type"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr "Invalid user ID: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "No such bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "No such user"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "User is deactivated"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} cannot be blank."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} has incorrect length {length}; should be {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} is not a recognized time zone"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} is not a valid hex color code"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} should have exactly {length} items"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} key is missing from {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr "Unexpected arguments: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} is not an allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} is wrong)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} is not a URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "URL pattern must contain '%(username)s'."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' cannot be blank."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Field must not have duplicate choices."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' is not a valid choice for '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} is not a string or an integer list"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} is not a string or integer"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} does not have a length"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} is missing"
@@ -4923,215 +5484,211 @@ msgstr "CSRF error: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr "Reverse proxy misconfiguration: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "stream events"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Available on Zulip Cloud Standard. Upgrade to access."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr "Available on Zulip Cloud Plus. Upgrade to access."
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "GIPHY integration disabled"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "Allow GIFs rated Y (Very young audience)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "Allow GIFs rated G (General audience)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "Allow GIFs rated PG (Parental guidance)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "Allow GIFs rated R (Restricted)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Invalid characters in emoji name"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr "Bad regular expression: {regex}"
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Unknown regular expression error"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Invalid URL template."
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "Group %(name)r in URL template is not present in linkifier pattern."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Group %(name)r in linkifier pattern is not present in URL template."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Invalid characters in pygments language"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr "Missing the required variable \"code\" in the URL template"
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr "\"code\" should be the only variable present in the URL template"
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Admins, moderators, members and guests"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Admins, moderators and members"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Admins and moderators"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Admins only"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nobody"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Unknown user"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Organisation owner"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Organisation administrator"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderator"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Member"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Guest"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-public"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Public"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Private, shared history"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Private, protected history"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Public, protected history"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "All stream members can post"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Only organisation administrators can post"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Only organisation administrators and moderators can post"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Only organisation full members can post"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode emoji"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Custom emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip extra emoji"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr "User with ID {user_id} is deactivated"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr "User with ID {user_id} is a bot"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "List of options"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Date picker"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "External account"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronouns"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Bad regular expression: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Unknown regular expression error"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Invalid URL template."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "Group %(name)r in URL template is not present in linkifier pattern."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Group %(name)r in linkifier pattern is not present in URL template."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode emoji"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Custom emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip extra emoji"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Invalid characters in emoji name"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Invalid characters in pygments language"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "Missing the required variable \"code\" in the URL template"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "\"code\" should be the only variable present in the URL template"
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "stream events"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Available on Zulip Cloud Standard. Upgrade to access."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "Available on Zulip Cloud Plus. Upgrade to access."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "GIPHY integration disabled"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Allow GIFs rated Y (Very young audience)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "Allow GIFs rated G (General audience)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "Allow GIFs rated PG (Parental guidance)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "Allow GIFs rated R (Restricted)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-public"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Public"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Private, shared history"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Private, protected history"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Public, protected history"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "All stream members can post"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Only organisation administrators can post"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Only organisation administrators and moderators can post"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Only organisation full members can post"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Admins, moderators, members and guests"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Admins, moderators and members"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Admins and moderators"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Admins only"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nobody"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Unknown user"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Organisation owner"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Organisation administrator"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderator"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Member"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Guest"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Unknown IP address"
@@ -5144,20 +5701,20 @@ msgstr "an unknown operating system"
 msgid "An unknown browser"
 msgstr "An unknown browser"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Missing 'queue_id' argument"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Missing 'last_event_id' argument"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "An event newer than {event_id} has already been pruned!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Event {event_id} was not in this queue"
@@ -5195,41 +5752,41 @@ msgstr "Password is incorrect."
 msgid "User-Agent header missing from request"
 msgstr "User-Agent header missing from request"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Label cannot be blank."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Field must have at least one choice."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Field type not supported for display in profile summary."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Invalid field type."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Only 2 custom profile fields can be displayed in the profile summary."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "A field with that label already exists."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Default custom field cannot be updated."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Endpoint not available in production."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend not enabled."
 
@@ -5280,7 +5837,7 @@ msgstr "You must specify at least one email address."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "Stream does not exist with id: {stream_id}. No invites were sent."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "You do not have permission to subscribe other users to streams."
 
@@ -5329,19 +5886,19 @@ msgstr "The anchor can only be excluded at an end of the range"
 msgid "No such topic '{topic}'"
 msgstr "No such topic '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Missing sender"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Mirroring not allowed with recipient user IDs"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Invalid mirrored message"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr mirroring is not allowed in this organisation"
 
@@ -5357,42 +5914,46 @@ msgstr "User already muted"
 msgid "User is not muted"
 msgstr "User is not muted"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Presence is not supported for bot users."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "No presence data for {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Client did not pass any new values."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "Invalid status: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "Invalid app ID"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Empty or invalid length token"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Invalid APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "Error returned by the bouncer: {result}"
@@ -5407,55 +5968,55 @@ msgstr "At least one of the following arguments must be present: emoji_name, emo
 msgid "Read receipts are disabled in this organization."
 msgstr "Read receipts are disabled in this organisation."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Invalid language '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "At least one authentication method must be enabled."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "Invalid video_chat_provider {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "Invalid giphy_rating {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Must be a demo organisation."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "Invalid domain: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "The domain {domain} is already a part of your organisation."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "No entry found for domain {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "You must upload exactly one file."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Only administrators can override default emoji."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "Uploaded file is larger than the allowed limit of {max_size} MiB"
@@ -5489,7 +6050,7 @@ msgstr "Export still in progress"
 msgid "You must upload exactly one icon."
 msgstr "You must upload exactly one icon."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier not found."
 
@@ -5517,71 +6078,71 @@ msgstr "Invalid request format"
 msgid "Invalid DSN"
 msgstr "Invalid DSN"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Private streams cannot be made default."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "You must pass \"new_description\" or \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Stream already has that name!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} subscribed you to the stream {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} subscribed you to the following streams:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Unable to access stream ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "You can only invite other Zephyr mirroring users to private streams."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} created the following streams: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} created a new stream {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "new streams"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** stream created by {user_name}. **Description:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "Unknown subscription property: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "Not subscribed to stream id {stream_id}"
@@ -5590,7 +6151,7 @@ msgstr "Not subscribed to stream id {stream_id}"
 msgid "Invalid json for submessage"
 msgstr "Invalid json for submessage"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "You are not authorised to view this file.
"
 
@@ -5614,112 +6175,112 @@ msgstr "Empty 'to' list"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "User has disabled typing notifications for direct messages"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr "This file does not exist or has been deleted.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Invalid token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Invalid filename"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "You must specify a file to upload"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "You may only upload one file at a time"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "No new data supplied"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} added you to the group {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} removed you from the group {group_name}."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "User {user_id} is already a member of this group"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "There is no member '{user_id}' in this user group"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "User group {group_id} is already a subgroup of this group."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "User group {user_group_id} is already a subgroup of one of the passed subgroups."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "User group {group_id} is not a subgroup of this group."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Avatar changes are disabled in this organisation."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Email address changes are disabled in this organisation."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Invalid default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "Invalid notification sound '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "Invalid email batching period: {seconds} seconds"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Your Zulip password is managed in LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Wrong password!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "You're making too many attempts! Try again in {seconds} seconds."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "New password is too weak!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "You must upload exactly one avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Topic is not muted"
 
@@ -5780,43 +6341,43 @@ msgstr "Disposable email addresses are not allowed in this organisation"
 msgid "Email '{email}' already in use"
 msgstr "Email '{email}' already in use"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Invalid Zoom access token"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom credentials have not been configured"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Invalid Zoom session identifier"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Invalid Zoom credentials"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Failed to create Zoom call"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton is not configured."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Invalid signature."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Error connecting to the BigBlueButton server."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Error authenticating to the BigBlueButton server."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton server returned an unexpected error."
 
@@ -5849,11 +6410,11 @@ msgstr "Invalid payload"
 msgid "Unknown webhook request"
 msgstr "Unknown webhook request"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Topic can't be empty"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Content can't be empty"
 
@@ -5880,7 +6441,7 @@ msgstr "The newrelic webhook requires state be in [created|activated|acknowledge
 msgid "Events key is missing from payload"
 msgstr "Events key is missing from payload"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Unable to handle Pivotal payload"
 
@@ -5897,83 +6458,105 @@ msgstr "Message from Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "Unknown WordPress webhook action: {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "Your data export is complete. [View and download exports]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Invalid subdomain for push notifications bouncer"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Must validate with valid Zulip server API key"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Invalid UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Invalid token type"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} is not a valid hostname"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "Missing ios_app_id"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "Missing user_id or user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr "Your plan doesn't allow sending push notifications."
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "Invalid property {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr "Invalid event type."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Data is out of order."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "Duplicate registration detected."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
-msgstr "Failed to migrate customer from server to realms. Please contact support for assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
+msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "Malformed audit log data"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "You need to reset your password."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Missing id_token parameter"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Invalid OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Can't use both mobile_flow_otp and desktop_flow_otp together."
diff --git a/locale/en_GB/translations.json b/locale/en_GB/translations.json
index 0769a975c3..23958dc2e2 100644
--- a/locale/en_GB/translations.json
+++ b/locale/en_GB/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(attached file)",
   "(forever)": "(forever)",
   "(hidden)": "(hidden)",
-  "(no description)": "(no description)",
   "(no topic)": "(no topic)",
   "(or )": "(or )",
   "(you)": "(you)",
   "({message_retention_days} days)": "({message_retention_days} days)",
   "/dark (Switch to the dark theme)": "/dark (Switch to the dark theme)",
   "/light (Switch to light theme)": "/light (Switch to light theme)",
-  "/me is excited (Display action text)": "/me is excited (Display action text)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Where should we go to lunch today? (Create a poll)",
-  "/todo (Create a todo list)": "/todo (Create a todo list)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 day",
   "1 hour": "1 hour",
   "1 week": "1 week",
@@ -28,7 +27,7 @@
   "6 hours": "6 hours",
   "Total messages: {total_messages}": "Total messages: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
",
-  "Stream will be announced in #{notifications_stream}.
": "Stream will be announced in #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "You are searching for messages that are sent by more than one person, which is not possible.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "You are searching for messages that belong to more than one stream, which is not possible.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "You are searching for messages that belong to more than one topic, which is not possible.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Activity unknown",
   "Add": "Add",
   "Add GIF": "Add GIF",
+  "Add a description": "",
   "Add a new alert word": "Add a new alert word",
   "Add a new bot": "Add a new bot",
   "Add a new code playground": "Add a new code playground",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Bot email",
   "Bot email (a-z, 0-9, and dashes only)": "Bot email (a-z, 0-9, and dashes only)",
+  "Bot is deactivated": "",
   "Bot owner": "Bot owner",
   "Bot type": "Bot type",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Close this dialog window",
   "Code": "Code",
   "Code playgrounds": "Code playgrounds",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Collapse compose",
   "Collapse direct messages": "Collapse direct messages",
   "Collapse message": "Collapse message",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configure the authentication methods for your organisation.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configure the default streams new users are subscribed to when joining your organisation.",
   "Confirm": "Confirm",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Consider searching all public streams.",
   "Contact a moderator to resolve this topic.": "Contact a moderator to resolve this topic.",
   "Contact a moderator to unresolve this topic.": "Contact a moderator to unresolve this topic.",
@@ -292,6 +294,7 @@
   "Copy code": "Copy code",
   "Copy link": "Copy link",
   "Copy link to message": "Copy link to message",
+  "Copy link to profile": "",
   "Copy link to topic": "Copy link to topic",
   "Copy mention syntax": "Copy mention syntax",
   "Copy version": "Copy version",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Delete all drafts",
   "Delete all selected drafts": "Delete all selected drafts",
   "Delete code playground?": "Delete code playground?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Delete custom profile field?",
   "Delete data export?": "Delete data export?",
   "Delete draft": "Delete draft",
@@ -413,7 +417,6 @@
   "Domain": "Domain",
   "Don’t allow disposable email addresses": "Don’t allow disposable email addresses",
   "Download": "Download",
-  "Download .zuliprc": "Download .zuliprc",
   "Download botserverrc": "Download botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Download config of all active outgoing webhook bots in Zulip Botserver format.",
   "Download file": "Download file",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Education (for-profit)",
   "Education (non-profit)": "Education (non-profit)",
   "Effect": "Effect",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "Email address",
   "Email address changes are disabled in this organization.": "Email address changes are disabled in this organisation.",
@@ -550,7 +554,7 @@
   "Follow": "Follow",
   "Followed": "Followed",
   "Followed topics": "Followed topics",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "For example, to configure a code playground for code blocks tagged as Python, you can set:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "For more examples and technical details, see the help center documentation on adding code playgrounds.",
   "For more examples, see the help center documentation on adding linkifiers.": "For more examples, see the help center documentation on adding linkifiers.",
   "Forgot it?": "Forgot it?",
@@ -606,6 +610,8 @@
   "Image": "Image",
   "In a meeting": "In a meeting",
   "In muted streams, stream notification settings apply only to unmuted topics.": "In muted streams, stream notification settings apply only to unmuted topics.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inactive",
   "Inactive bots": "Inactive bots",
   "Inbox": "Inbox",
@@ -704,9 +710,11 @@
   "Manage this bot": "Manage this bot",
   "Manage this user": "Manage this user",
   "Manage user": "Manage user",
+  "Manage your API key": "",
   "March": "March",
   "Mark all messages as read": "Mark all messages as read",
   "Mark all messages as read?": "Mark all messages as read?",
+  "Mark all messages as unread": "",
   "Mark as read": "Mark as read",
   "Mark as resolved": "Mark as resolved",
   "Mark as unread from here": "Mark as unread from here",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mentioned in",
   "Mentions": "Mentions",
   "Menus": "Menus",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Message #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Message #{stream_name} > {topic_name}",
   "Message actions": "Message actions",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Message {recipient_label}",
   "Message {recipient_names}": "Message {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Message {recipient_name} ({recipient_status})",
+  "Messages": "Messages",
   "Messages in all public streams": "Messages in all public streams",
   "Messages sent by you": "Messages sent by you",
   "Messages sent by {sender}": "Messages sent by {sender}",
@@ -805,6 +815,7 @@
   "Never expires": "Never expires",
   "New": "New",
   "New direct message": "New direct message",
+  "New direct message from {sender_full_name}": "",
   "New email": "New email",
   "New message": "New message",
   "New option": "New option",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Next unread direct message",
   "Next unread followed topic": "Next unread followed topic",
   "Next unread topic": "Next unread topic",
-  "No bots found.": "No bots found.",
+  "No active users.": "",
   "No bots match your current filter.": "No bots match your current filter.",
   "No conversations match your filters.": "No conversations match your filters.",
-  "No custom emojis found.": "No custom emojis found.",
   "No custom emojis match your current filter.": "No custom emojis match your current filter.",
   "No custom profile field configured for this organization.": "No custom profile field is configured for this organisation.",
-  "No deactivated users found.": "No deactivated users found.",
-  "No default streams found.": "No default streams found.",
   "No default streams match your current filter.": "No default streams match your current filter.",
   "No description.": "No description.",
   "No drafts selected": "No drafts selected",
   "No drafts.": "No drafts.",
-  "No exports found.": "No exports found.",
   "No group members match your current filter.": "No group members match your current filter.",
-  "No invites found.": "No invites found.",
   "No invites match your current filter.": "No invites match your current filter.",
   "No language set": "No language set",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "No linkifiers match your current filter.",
-  "No linkifiers set.": "No linkifiers set.",
   "No matching results": "No matching results",
   "No matching streams": "No matching streams",
   "No matching users.": "No matching users.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "No topics are marked as resolved.",
   "No topics match your current filter.": "No topics match your current filter.",
   "No uploaded files match your current filter.": "No uploaded files match your current filter.",
+  "No user found": "",
   "No user group subscriptions.": "No user group subscriptions.",
   "No user groups": "No user groups",
   "No user to subscribe.": "No user to subscribe.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Nobody in this Zulip organisation will be able to see this email address.",
   "Non-profit (registered)": "Non-profit (registered)",
   "None": "None",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Note that any bots that you maintain will be disabled.",
   "Note that organizations are limited to five exports per week.": "Note that organisations are limited to five exports per week.",
   "Nothing to preview": "Nothing to preview",
@@ -932,6 +940,7 @@
   "Other permissions": "Other permissions",
   "Other settings": "Other settings",
   "Other users in this Zulip organization will be able to see this email address.": "Other users in this Zulip organisation will be able to see this email address.",
+  "Others": "",
   "Out sick": "Out sick",
   "Outgoing webhook message format": "Outgoing webhook message format",
   "Override default emoji?": "Override default emoji?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Require topics in stream messages",
   "Research": "Research",
   "Resend": "Resend",
-  "Resend invitation": "Resend invitation",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Resending encountered an error. Please reload and try again.",
+  "Reset to default notifications": "",
   "Reset zoom": "Reset zoom",
   "Restore draft": "Restore draft",
   "Restrict email domains of new users?": "Restrict email domains of new users?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Search for  in the topic or message content.",
   "Search people": "Search people",
   "Search results": "Search results",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "See how to configure email.",
   "Select a stream": "Select a stream",
   "Select a stream below or change topic name.": "Select a stream below or change topic name.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Show starred message count",
   "Show status text": "Show status text",
   "Show unread counts for": "Show unread counts for",
-  "Show/change your API key": "Show/change your API key",
   "Showing messages since {time_string}.": "Showing messages since {time_string}.",
   "Sign up": "Sign up",
   "Silent mentions do not trigger notifications.": "Silent mentions do not trigger notifications.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "The sender's email address",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.",
   "The stream description cannot contain newline characters.": "The stream description cannot contain newline characters.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Their password will be cleared from our systems, and any bots they maintain will be disabled.",
   "Theme": "Theme",
+  "There are no bots.": "",
   "There are no current alert words.": "There are no current alert words.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "There are no messages here.",
   "There are no streams you can view in this organization.": "There are no streams you can view in this organisation.",
   "There are no unread messages in your inbox.": "There are no unread messages in your inbox.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "This bot cannot be deactivated.",
   "This bot cannot be edited.": "This bot cannot be edited.",
   "This bot has been deactivated.": "This bot has been deactivated.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "This conversation may have additional messages not shown in this view.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "This demo organisation will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organisation.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "This feature is available on Zulip Cloud Plus. Upgrade to access.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "This will clear the  profile field for  users.",
   "This will delete the  profile field for 1 user.": "This will delete the  profile field for 1 user.",
   "This will delete the  profile field for  users.": "This will delete the  profile field for  users.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Thursday",
   "Time": "Time",
   "Time format": "Time format",
@@ -1240,6 +1259,7 @@
   "Today": "Today",
   "Today at {time}": "Today at {time}",
   "Toggle first emoji reaction on selected message": "Toggle first emoji reaction on selected message",
+  "Toggle preview mode": "",
   "Toggle subscription": "Toggle subscription",
   "Toggle the gear menu": "Toggle the gear menu",
   "Toggle topic mute": "Toggle topic mute",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "You do not have permission to add other users to streams in this organisation.",
   "You do not have permission to join this group.": "You do not have permission to join this group.",
   "You do not have permission to leave this group.": "You do not have permission to leave this group.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.",
   "You do not have permission to post in this stream.": "You do not have permission to post in this stream.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organisation.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Zulip Server {display_version}",
   "Zulip Server {display_version} (modified)": "Zulip Server {display_version} (modified)",
   "Zulip Server {display_version} (patched)": "Zulip Server {display_version} (patched)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip needs to send email to confirm users' addresses and send notifications.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip needs your permission to enable desktop notifications.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.",
@@ -1541,6 +1561,9 @@
   "more topics": "more topics",
   "she/her": "she/her",
   "they/them": "they/them",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {User invited successfully.} other {Users invited successfully.}}",
diff --git a/locale/eo/LC_MESSAGES/django.po b/locale/eo/LC_MESSAGES/django.po
index 00e2025989..51c1ea81cf 100644
--- a/locale/eo/LC_MESSAGES/django.po
+++ b/locale/eo/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -18,56 +18,50 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -76,7 +70,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -84,7 +78,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than one user to join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -92,7 +86,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than two users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -100,7 +94,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than three users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -109,11 +103,11 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -129,124 +123,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this "
 "page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -256,54 +250,61 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -313,8 +314,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -425,7 +463,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr ""
 
@@ -567,36 +605,138 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr ""
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -618,6 +758,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -637,11 +1222,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -656,12 +1237,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -694,103 +1275,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -806,14 +1332,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -862,7 +1380,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
@@ -895,8 +1413,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr ""
 
@@ -930,26 +1448,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1181,21 +1695,21 @@ msgstr ""
 msgid "Normal users"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2452,7 +2966,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2465,12 +2989,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr ""
 
@@ -2502,7 +3026,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2869,12 +3393,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2883,11 +3403,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -3060,6 +3575,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3223,125 +3756,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3371,72 +3886,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3455,136 +3970,141 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3594,38 +4114,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3640,7 +4160,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3650,187 +4170,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3887,88 +4407,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3976,166 +4496,166 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4233,106 +4753,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4340,119 +4860,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4466,45 +4986,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4516,23 +5036,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4552,21 +5072,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4603,7 +5123,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4617,7 +5137,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4626,7 +5146,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4658,28 +5178,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4690,18 +5210,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4711,24 +5231,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4738,8 +5258,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4758,21 +5278,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4829,161 +5349,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5017,215 +5537,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4983
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4987
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5027
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5048
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5053
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5238,20 +5754,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5289,41 +5805,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5374,7 +5890,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5423,19 +5939,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5451,42 +5967,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5501,55 +6021,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5583,7 +6103,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5611,71 +6131,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5684,7 +6204,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5708,112 +6228,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5874,43 +6394,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5943,11 +6463,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5974,7 +6494,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5991,83 +6511,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/eo/translations.json b/locale/eo/translations.json
index 21d2ddb148..a1b518e813 100644
--- a/locale/eo/translations.json
+++ b/locale/eo/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "",
+  "{N, plural, one {# participant} other {# participants}}": "",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "",
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index d39a585a40..603c2e2785 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -16,6 +16,7 @@
 # Greg Price , 2017
 # Jose Franca , 2019
 # Lauryn Menard, 2023
+# Marcos Matas, 2023
 # Milagros More , 2021
 # Noelia López, 2023
 # Tim Abbott , 2018
@@ -24,9 +25,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: Eduardo, 2023\n"
+"Last-Translator: Marcos Matas, 2023\n"
 "Language-Team: Spanish (http://app.transifex.com/zulip/zulip/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -34,57 +35,51 @@ msgstr ""
 "Language: es\n"
 "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "No está permitido para usuarios invitados"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organización inválida"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Canales públicos"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Canales privados"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Mensajes directos"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Mensajes directos grupales"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
-msgstr ""
+msgstr "Canal ausente para el gráfico: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
-msgstr ""
+msgstr "Nombre de gráfico desconocido: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "La hora de inicio es más tarde que la hora de fin. Inicio: {start}, Fin: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "No hay datos de analíticas disponible. Por favor, contacta con el administrador de tu servidor."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Parámetros inválidos"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -93,7 +88,7 @@ msgid ""
 "users to join."
 msgstr "Tu organización no tiene más licencias de Zulip restantes y no puede aceptar nuevos usuarios. Por favor [incrementa el número de licencias]({billing_page_link}) o [desactiva usuarios]({deactivate_user_help_page_link}) para permitir agregar nuevos usuarios."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -102,7 +97,7 @@ msgid ""
 "join."
 msgstr "Tu organización solo tiene una licencia Zulip restante. Puedes [incrementar el número de licencias]({billing_page_link}) o [desactivar a usuarios inactivos]({deactivate_user_help_page_link}) para permitir que pueda unirse más de un usuario a tu organización."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -111,7 +106,7 @@ msgid ""
 "join."
 msgstr "Tu organización solo tiene una licencia Zulip restante. Puedes [incrementar el número de licencias]({billing_page_link}) o [desactivar a usuarios inactivos]({deactivate_user_help_page_link}) para permitir que puedan unirse más de dos usuarios a tu organización."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -120,7 +115,7 @@ msgid ""
 "join."
 msgstr "Tu organización solo tiene una licencia Zulip restante. Puedes [incrementar el número de licencias]({billing_page_link}) o [desactivar a usuarios inactivos]({deactivate_user_help_page_link}) para permitir que puedan unirse más de tres usuarios a tu organización."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -129,11 +124,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "El nuevo miembro({email}) no ha podido unirse a tu organización porque todas tus licencias Zulip están en uso. Por favor [incrementa el número de licencias]({billing_page_link}) o [desactiva a usuarios inactivos]({deactivate_user_help_page_link}) para permitir que se unan nuevos usuarios."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Todas las licencias de Zulip para esta organización ya están en uso."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -149,124 +144,124 @@ msgstr "El registro está desactivado."
 msgid "Invalid remote server."
 msgstr "Servidor remoto no válido."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Debes comprar licencias para todos los usuarios activos en tu organización (mínimo {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Las facturas con más de {max_licenses} licencias no pueden ser procesadas a través de esta página. Para completar esta compra, por favor contactar con {email}"
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
-msgstr ""
+msgstr "No hay método de pago registrado."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} terminada en {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Método de pago desconocido. Por favor contactar a {email}"
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Algo ha fallado. Contacta en {email}"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Algo salió mal. Por favor, recarga la página."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Algo salió mal. Por favor, espera unos segundos e inténtalo de nuevo."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Por favor, añada una tarjeta de crédito antes de comenzar su periodo de prueba."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
-msgstr ""
+msgstr "Por favor, añada una tarjeta de crédito para programar la actualización."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "No se puede actualizar el plan. El plan venció y se reemplazó con un nuevo plan."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "No es posible actualizar el plan. El plan ha finalizado."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
-msgstr ""
+msgstr "No se pueden actualizar las licencias en el período de facturación actual para el plan de prueba gratuita."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "No es posible actualizar las licencias manualmente. Tu plan gestiona las licencias automáticamente."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Tu plan ya dispone de {licenses} licencias en el periodo de facturación actual."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "No puedes disminuir las licencias en el periodo de facturación actual."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
-msgstr ""
+msgstr "No se pueden cambiar las licencias para el próximo ciclo de facturación para un plan que se está pasando a un nivel inferior."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Tu plan ya está planeado para renovarse con {licenses_at_next_renewal} licencias."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Nada que cambiar"
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "¡No hay clientes para esta organización!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Sesión no encontrada"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Debes ser un administrador de facturación o un administrador de la organización."
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Intento de pago no encontrado"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -274,54 +269,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "¡La solicitud de alojamiento patrocinado de su organización ha sido aprobada! Se ha actualizado tu plan a {plan_name} de forma gratuita. {emoji}\n\nAgradeceríamos mucho si pudieras {begin_link} añadir a Zulip como un patrocinador de tu página web{end_link}"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
-msgstr ""
+msgstr "El parámetro 'confirmado' es necesario"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "El token de acceso a facturación expiró."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "El token de acceso a facturación es incorrecto."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
-msgstr ""
+msgstr "La cuenta de usuario aún no existe.."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
-msgstr ""
+msgstr "Debes aceptar los Términos del Servicio para continuar. "
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
-msgstr ""
+msgstr "Este zulip_org_id no está registrado en el sistema de gestión de facturación de Zulip."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
-msgstr ""
+msgstr "zulip_org_key no es válida para este zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
-msgstr ""
+msgstr "El registro de tu servidor ha sido desactivado."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Parámetros inválidos"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Error"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Método no permitido (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Página no encontrada (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -330,8 +332,41 @@ msgid ""
 "                        "
 msgstr "\nSi este error no es esperado, puede \ncontactar con el soporte."
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Método no permitido (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Error interno del servidor"
 
@@ -355,7 +390,7 @@ msgid ""
 "\n"
 "                            In the meantime, you can contact Zulip support.\n"
 "                            "
-msgstr ""
+msgstr "\nMientras tanto, puedes contactar con el soporte de Zulip."
 
 #: templates/500.html:36
 #, python-format
@@ -364,7 +399,7 @@ msgid ""
 "                            In the meantime, you can contact\n"
 "                            this server's administrators for support.\n"
 "                            "
-msgstr ""
+msgstr "\nMientras tato, puedes contactar\n con los administradores de este servidorpara recibir soporte."
 
 #: templates/500.html:44
 #, python-format
@@ -373,7 +408,7 @@ msgid ""
 "                            If you administer this server, you may want to check out the\n"
 "                            Zulip server troubleshooting guide.\n"
 "                            "
-msgstr ""
+msgstr "\nSi administras este servidor, a lo mejor quieres revisar la \nGuía de solución de problemas para servidores."
 
 #: templates/analytics/stats.html:6
 #, python-format
@@ -381,11 +416,11 @@ msgid ""
 "\n"
 "    Analytics for %(target_name)s | Zulip\n"
 "    "
-msgstr ""
+msgstr "\nEstadísticas para %(target_name)s | Zulip"
 
 #: templates/analytics/stats.html:18
 msgid "Analytics are fully available 24 hours after organization creation."
-msgstr "Las analíticas están disponibles 24 horas después de crear una organización."
+msgstr "Las estadísticas están disponibles 24 horas después de crear una organización."
 
 #: templates/analytics/stats.html:23
 #, python-format
@@ -418,7 +453,7 @@ msgstr "Número de mensajes en los últimos 30 días"
 
 #: templates/analytics/stats.html:32
 msgid "File storage in use"
-msgstr ""
+msgstr "Almacenamiento de archivos usado"
 
 #: templates/analytics/stats.html:37
 msgid "Active users"
@@ -436,7 +471,7 @@ msgstr "Activos en 15 días"
 msgid "Total users"
 msgstr "Usuarios totales"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Usuarios"
 
@@ -576,41 +611,137 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Asegúrate de haber copiado correctamente el enlace en tu navegador. Si sigues encontrándote con esta página, probablemente sea culpa nuestra. Lo sentimos."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Facturación"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Cerrar diálogo"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Olvídalo"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Downgrade"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirmar"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
 msgstr ""
 
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Estado de facturación"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "¿Desactivar el registro del servidor?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Mejorar"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Convertir la organización de demostración antes de actualizar. "
+
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
-msgstr ""
+msgstr "Directorio de comunidades abiertas."
 
 #: templates/corporate/communities.html:39
 #: templates/zerver/integrations/index.html:47
@@ -627,9 +758,454 @@ msgstr "Categorías"
 msgid "All"
 msgstr "Todas"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
-msgstr ""
+msgstr "Comunidad de desarrollo de Zulip"
 
 #: templates/corporate/development-community.html:30
 #: templates/corporate/development-community.html:55
@@ -646,11 +1222,7 @@ msgstr "Unirse como autohospedador."
 msgid "Join as a contributor"
 msgstr "Unirse como contribuidor"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Estado de facturación"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -665,12 +1237,12 @@ msgstr "Estado de facturación"
 msgid "Create organization"
 msgstr "Crear organización"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
-msgstr ""
+msgstr "Planes y precios"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -697,63 +1269,60 @@ msgstr "Solicitar patrocinio"
 
 #: templates/corporate/for/education.html:35
 msgid "Education pricing"
-msgstr ""
+msgstr "Tarifa para educación"
 
 #: templates/corporate/for/use-cases.html:26
 msgid "View pricing"
 msgstr "Mostrar precios"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip para empresas"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contactar a soporte"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Desde"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organización"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Asunto"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Mensaje"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Enviar"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Gracias por contactarnos"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "¡Gracias por contactarnos!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Nos pondremos en contacto contigo pronto."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
 "            Zulip help center.\n"
 "            "
-msgstr ""
+msgstr "\nPuedes ver respuestas a las preguntas más comunes en el\nCentro de Ayuda de Zulip."
 
 #: templates/corporate/team.html:146
 msgid "Avatar"
@@ -763,20 +1332,12 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Probar Zulip ahora"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Mejorar"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
 "        This team chat is now being hosted on Zulip Cloud. Please accept the Zulip Terms of Service to continue.\n"
 "        "
-msgstr ""
+msgstr "\nEste chat de grupo está alojado en la nube de Zulip. Por favor, acepta las Condiciones del servicio de Zulip para continuar."
 
 #: templates/two_factor/_wizard_forms.html:26
 msgid "Or, alternatively, use one of your backup phones:"
@@ -818,7 +1379,7 @@ msgstr "Continuar"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Registrarse"
 
@@ -851,8 +1412,8 @@ msgstr "¿Ya tienes una cuenta?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Entrar"
 
@@ -867,51 +1428,47 @@ msgid ""
 "To complete your registration, check your email account (%(email)s) for a confirmation email "
 "from Zulip."
-msgstr ""
+msgstr "Para completar tu registro, por favor, comprueba tu cuenta de correo (%(email)s) y busca un correo de confirmación de Zulip. "
 
 #: templates/zerver/accounts_send_confirm.html:25
 msgid ""
 "If you don't see a confirmation email in your Inbox or Spam folder, we can "
 "resend it."
-msgstr ""
+msgstr "Si no ves un correo de confirmación en tu Bandeja de entrada o en tu Bandeja de Correo no deseado, podemos enviártelo de nuevo."
 
 #: templates/zerver/app/index.html:128
 msgid ""
 "If this message does not go away, try reloading "
 "the page."
-msgstr ""
+msgstr "Si este mensaje no desaparece, intenta recargarla página."
 
 #: templates/zerver/app/index.html:131
 msgid "Error loading Zulip. Try reloading the page."
-msgstr ""
+msgstr "Error cargando Zulip. Intenta recargar la página."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "No ha sido posible conectar con Zulip"
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Las actualizaciones pueden estar retrasadas."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Volviéndolo a intentar pronto..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Reintentar"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Mensajes"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
-msgstr ""
+msgstr "Error de subdominio de autenticación"
 
 #: templates/zerver/auth_subdomain.html:15
 msgid "Authentication subdomain"
-msgstr ""
+msgstr "Subdominio de autenticación"
 
 #: templates/zerver/auth_subdomain.html:17
 msgid ""
@@ -922,7 +1479,7 @@ msgid ""
 "                        you probably got the address wrong. If you got stuck here while trying\n"
 "                        to log in, this is most likely a server bug or misconfiguration.\n"
 "                        "
-msgstr ""
+msgstr "\nAprece que as acabado aquí por accidente. Este sitio\nestá destinado a ser un paso intermedio en el proceso de autenticación\ny no debería accederse a él de forma manual. Si has llegado a él directamente\nprobablemente estás usando una dirección incorrecta. Si te has quedado atrapado aquí mientras estás intentando\n logarte, lo más probable es que sea un error del servidor o una configuración incorrecta. "
 
 #: templates/zerver/change_email_address_visibility_modal.html:6
 msgid "Configure email address privacy"
@@ -932,17 +1489,17 @@ msgstr "Configurar la privacidad de las direcciones de correo. "
 msgid ""
 "Zulip lets you control which roles in the organization can view your email "
 "address."
-msgstr ""
+msgstr "Zulip te permite controlar qué roles en la organización pueden ver tu correo electrónico."
 
 #: templates/zerver/change_email_address_visibility_modal.html:13
 msgid ""
 "Do you want to change the privacy setting for your email from the default "
 "configuration for this organization?"
-msgstr ""
+msgstr "¿Deseas cambiar la configuración de privacidad para tu correo electrónico desde la configuración predeterminada de esta organización?"
 
 #: templates/zerver/change_email_address_visibility_modal.html:15
 msgid "Who can access your email address"
-msgstr ""
+msgstr "Quiénes pueden acceder a tu dirección de correo"
 
 #: templates/zerver/change_email_address_visibility_modal.html:22
 #, python-format
@@ -950,7 +1507,7 @@ msgid ""
 "You can also change this setting after you join."
-msgstr ""
+msgstr "También puedes cambiar esta configuración después de unirte."
 
 #: templates/zerver/close_window.html:5
 msgid "Video call ended"
@@ -972,7 +1529,7 @@ msgid ""
 "        organization first. Please use EmailAuthBackend to create\n"
 "        your organization and then try again.\n"
 "    "
-msgstr ""
+msgstr "\nEstás intentando iniciar sesión usando LDAP sin crear antes \nuna organización. Por favor, usa EmailAuthBackend para crear\n tu organización y luego inténtalo de nuevo. "
 
 #: templates/zerver/confirm_continue_registration.html:4
 msgid "Account not found"
@@ -1021,7 +1578,7 @@ msgid ""
 "                from Slack, Mattermost,\n"
 "                Gitter, or Rocket.Chat.\n"
 "                "
-msgstr ""
+msgstr "\nO importa\ndesde Slack, Mattermost,\nGitter, o Rocket.Chat."
 
 #: templates/zerver/deactivated.html:4 templates/zerver/deactivated.html:19
 msgid "Deactivated organization"
@@ -1033,7 +1590,7 @@ msgid ""
 "\n"
 "                    The organization you are trying to join, %(deactivated_domain_name)s, has been deactivated.\n"
 "                    "
-msgstr ""
+msgstr "\nLa organización a la que estás intentando acceder, %(deactivated_domain_name)s, ha sido desactivada."
 
 #: templates/zerver/deactivated.html:28
 #, python-format
@@ -1041,7 +1598,7 @@ msgid ""
 "\n"
 "                        It has moved to %(deactivated_redirect)s.\n"
 "                        "
-msgstr ""
+msgstr "\nHa sido movido a %(deactivated_redirect)s."
 
 #: templates/zerver/deactivated.html:32
 #, python-format
@@ -1050,7 +1607,7 @@ msgid ""
 "                    Please contact %(support_email)s to reactivate\n"
 "                    this group.\n"
 "                    "
-msgstr ""
+msgstr "\nPor favor, contacta con %(support_email)s para reactivar\neste grupo."
 
 #: templates/zerver/desktop_login.html:5
 msgid "Finish desktop app login"
@@ -1064,7 +1621,7 @@ msgstr "Finalizar inicio de sesión de escritorio"
 msgid ""
 "Use your web browser to finish logging in, then come back here to paste in "
 "your login token."
-msgstr ""
+msgstr "Usa tu navegador web para completar la inscripción. Después vuelve aquí para pegar tu token de inicio de sesión."
 
 #: templates/zerver/desktop_login.html:18
 msgid "Paste token here"
@@ -1089,7 +1646,7 @@ msgstr "Iniciar sesión en la aplicación de escritorio"
 #: templates/zerver/desktop_redirect.html:12
 msgid ""
 "Copy this login token and return to your Zulip app to finish logging in:"
-msgstr ""
+msgstr "Copia este token de inicio de sesión y vuelve a tu aplicación de Zulip para terminar el inicio de sesión."
 
 #: templates/zerver/desktop_redirect.html:17
 msgid "Copy"
@@ -1127,27 +1684,27 @@ msgstr "Usuarios invitados"
 msgid "Normal users"
 msgstr "Usuarios normales"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
-msgstr ""
+msgstr "Reenviar los correos a una dirección de correo"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Cerrar"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Actualizar"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
 #: templates/zerver/digest_base.html:5
 msgid "Digest"
-msgstr ""
+msgstr "Resumen"
 
 #: templates/zerver/emails/account_registered.html:11
 #, python-format
@@ -1157,7 +1714,7 @@ msgid ""
 "    about demo organizations here!\n"
 "    "
-msgstr ""
+msgstr "Felicidades. Has creado una nueva organización Zulip de demostración. Ten en cuenta \nque esta organización será automáticamente borrada en 30 días. ¡Aprende más sobre \norganizaciones de demostración aquí!"
 
 #: templates/zerver/emails/account_registered.html:19
 #, python-format
@@ -1176,14 +1733,14 @@ msgstr "¡Bienvenido a Zulip!"
 msgid ""
 "You've joined the Zulip organization %(realm_name)s.\n"
 "    "
-msgstr ""
+msgstr "Acabas de iniciar sesión en la organización de Zulip %(realm_name)s."
 
 #: templates/zerver/emails/account_registered.html:32
 #, python-format
 msgid ""
 "You will use the following info to log into the Zulip web, mobile and desktop apps:"
-msgstr ""
+msgstr "Usarás la siguiente información para iniciar sesión en las aplicaciones web, móviles y de escritorio de Zulip:"
 
 #: templates/zerver/emails/account_registered.html:34
 #: templates/zerver/emails/account_registered.txt:16
@@ -2364,7 +2921,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2384,7 +2941,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2394,12 +2960,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Dirección de correo electrónico"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Encontrar cuentas"
 
@@ -2431,7 +2997,7 @@ msgstr "Integraciones"
 msgid "Desktop & mobile apps"
 msgstr "Aplicaciones para móvil y escritorio"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nueva organización"
 
@@ -2799,12 +3365,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2813,11 +3375,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2986,6 +3543,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Reestablece tu contraseña"
@@ -3143,123 +3716,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Orden del mapeo inválido."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Id de campo {id} no encontrado."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Para proteger a los usuarios, Zulip limita el número de invitaciones que puedes enviar en un día. Ya que haz alcanzado el límite, no se enviaron invitaciones."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Tu cuenta es demasiado nueva para enviar invitaciones en esta organización. Pídeselo a un administrador de la organización, o a un usuario con más experiencia."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Algunos correos electrónicos no se han validado, por lo que no hemos enviado ninguna invitación."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "No hemos podido invitar a nadie."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3289,72 +3846,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Tu organización ha desactivado la edición de mensajes"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "No tienes permiso para editar este mensaje"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "El límite de tiempo para editar este mensaje ha pasado"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Este tema ha sido movido a {new_location} por {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Un mensaje ha sido movido de este tema a {new_location} por {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} mensajes fueron movidos de este tema {new_location} por {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Este tema ha sido movido acá desde {old_location} por {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} mensajes fueron movidos acá desde {old_location} por {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Tu organización ha desactivado la edición de mensajes"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "No tienes permiso para editar este mensaje"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "El límite de tiempo para editar este mensaje ha pasado"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3373,137 +3930,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Mensaje(s) inválido(s)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "No se pudo renderizar el mensaje"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Los mensajes directos están deshabilitados para esta organización"
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: el programador de la API envió contenido JSON inválido"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Ya existe un emoticono personalizado con ese nombre."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3512,38 +4074,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Sin descripción."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3557,7 +4119,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3567,187 +4129,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Esta API no está disponible a los bots de webhook de entrada."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Cuenta no asociada con este subdominio"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Este endpoint no acepta peticiones de bots."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Debes ser un administrador del servidor"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permisos insuficientes"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Este endpoint requiere autentificación HTTP básica."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Cabecera de autorización inválida para la autentificación básica"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Falta la cabecera de autorización para la autentificación básica"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Los bots de webhook solo pueden acceder a los webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "El subdominio necesita tener una longitud de 3 caracteres o superior."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "El subdominio no puede empezar o terminar con un '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "El subdominio solo puede tener letras minúsculas, números, y '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Por favor, usa tu dirección de correo electrónico real."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "La organización a la que estás intentando unirte usando {email} no existe."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Por favor, solicita una invitación para {email} del administrador de la organización."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Tu dirección de correo electrónico, {email}, no está en uno de los dominios permitidos para el registro de cuentas en esta organización."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Las direcciones de correo electrónico que contienen símbolos + no están permitidas en esta organización."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nueva contraseña"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Por favor, introduce como máximo 10 correos."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "No se pudo encontrar la organización de Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Falta el tema"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "No se puede enviar a varios canales"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Falta el canal"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "El mensaje debe tener destinatarios"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tipo de mensaje inválido"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Adjunto inválido"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Un error ocurrió al eliminar el adjunto. Por favor, inténtalo de nuevo más adelante."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "El mensaje debe tener destinatarios!"
 
@@ -3804,88 +4366,88 @@ msgstr "El usuario ha deshabilitado la sincronización de borradores."
 msgid "Draft does not exist"
 msgstr "El borrador no existe"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Dirección inválida."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Fuera de tu dominio."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Las direcciones de correo electrónico que contienen símbolos + no están permitidas."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Reservado para bots de sistema."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} ya tiene una cuenta"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Ya tiene una cuenta."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "La cuenta ha sido desactivada."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoticono personalizado inválido."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nombre de emoticono personalizado inválido."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "El emoticono personalizado ha sido desactivado."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Código de emoticono inválido."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nombre de emoticono inválido."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Tipo de emoticono inválido."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Debes ser un administrador de la organización o el autor del emoticono"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3893,119 +4455,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "No se pudo ubicar la cola de eventos"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Sesión no iniciada: autentificación API o sesión de usuario requerida"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "El canal '{stream}' no existe"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Canal con ID '{stream_id}' no existe"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "Propietario de la organización"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "usuario"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "No se puede desactivar la única {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Sentencia de inclusión de markdown inválido {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "El uso de la API excedió el límite"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON malformado"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Debe ser un miembro de la organización"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Debes ser un administrador de la organización"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Debe ser un propietario de la organización"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Tu nombre de usuario o contraseña son incorrectos"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "La cuenta está desactivada."
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Esta organización ha sido desactivada"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "El servicio de notificaciones push móviles de tu organizacion ha sido desactivado"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "La autenticación por contraseña ha sido desactivado en esta organización"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Tu contraseña ha sido inhabilitada y debe ser establecida de nuevo"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Clave de API inválida"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Formato inválido de clave de API"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Usuario no autenticado"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Subdominio inválido"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Acceso denegado"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4013,47 +4575,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Ya existe la reacción."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "No existe esa reacción."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Tipo de cuenta externa inválido"
 
@@ -4151,106 +4713,106 @@ msgstr "Productividad"
 msgid "Version control"
 msgstr "Control de versiones"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "El mensaje no puede estar vacío"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "El mensaje no puede contener bytes nulos"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Operador de filtro inválido: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Si eres nuevo en Zulip, revisa nuestra [Guia de Inicio]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "¡Hola y bienvenido a Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "¡Yo también puedo ayudarte a iniciar!, Solo presiona en cualquier parte de este mensaje o presiona `r` para responder."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Estos son algunos mensajes que entiendo:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4259,119 +4821,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4385,45 +4947,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "El token no existe"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4435,23 +4997,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Usuario no autorizado para esta petición"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4471,21 +5033,21 @@ msgstr "Falta el argumento '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Valor erróneo para '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4522,7 +5084,7 @@ msgstr "Por favor, escoge uno: 'canal' o 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "ID de canal inválido"
 
@@ -4536,7 +5098,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4545,7 +5107,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4577,28 +5139,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Los datos sobre los suscriptores no están disponibles en este canal"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "No se puede recopilar los suscriptores para un canal privado"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4609,18 +5171,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4630,24 +5192,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} es demasiado largo (límite: {max_length} caracteres)"
@@ -4657,8 +5219,8 @@ msgstr "{var_name} es demasiado largo (límite: {max_length} caracteres)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4677,21 +5239,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "La subida excedería el límite de subidas de tu organización."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "No se pudo decodificar imagen; ¿subiste un archivo de imagen?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "El tamaño de la imagen excede el límite."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4748,161 +5310,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "¡Nombre demasiado largo!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "¡Nombre demasiado corto!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "¡Caracteres inválidos en el nombre!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "¡Ese nombre ya se está usando!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Nombre o nombre de usuario erróneo"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "¡Datos de configuración inválidos!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Tipo de bot inválido"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tipo de interfaz inválido"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "No existe ese bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "No existe ese usuario"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "El usuario está desactivado"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} no puede estar vacío"
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} tiene una longitud incorrecta de {length}; debería ser {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' no puede estar vacío."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' no es una opción válida para '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4936,215 +5498,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "eventos de canal"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Caracteres inválidos en el nombre del emoticono"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Administradores, moderadores, miembros e invitados"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Administradores, moderadores y miembros"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Administradores y moderadores"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Solo administradores"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nadie"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administrador de la organización"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderador"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Miembro"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Invitado"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Público en Web"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Público"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Historia compartida, privada  "
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Historia protegida, privada  "
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Todos los miembros del canal pueden publicar"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Solo los administradores de la organización pueden publicar aquí."
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Solo los miembros definitivos de la organización pueden publicar aquí."
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoticonos unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoticonos personalizados"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoticonos extra de Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Lista de opciones"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Selector de personas"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Texto corto"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Texto largo"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Fecha"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Selector de fechas"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Enlace"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Cuenta externa"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronombres"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoticonos unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoticonos personalizados"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoticonos extra de Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Caracteres inválidos en el nombre del emoticono"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "eventos de canal"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Público en Web"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Público"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Historia compartida, privada  "
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Historia protegida, privada  "
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Todos los miembros del canal pueden publicar"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Solo los administradores de la organización pueden publicar aquí."
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Solo los miembros definitivos de la organización pueden publicar aquí."
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Administradores, moderadores, miembros e invitados"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Administradores, moderadores y miembros"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Administradores y moderadores"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Solo administradores"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nadie"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administrador de la organización"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderador"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Miembro"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Invitado"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Dirección IP desconocida"
@@ -5157,20 +5715,20 @@ msgstr "un sistema operativo desconocido"
 msgid "An unknown browser"
 msgstr "Un navegador desconocido"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Falta el argumento 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Falta el argumento 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5208,41 +5766,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr "No se encontró una entrada válida del User-Agent en la petición"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "El nombre no puede estar vacío"
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "El campo debe tener al menos una opción."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Tipo de campo inválido."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Ya existe un campo con ese nombre."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "El campo personalizado por defecto no puede ser actualizado."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5293,7 +5851,7 @@ msgstr "Debes especificar al menos una dirección de correo."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5342,19 +5900,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Falta el remitente"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "El mirroring no esta permitido con los IDs de usuario de los destinatarios"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Mensaje reflejado inválido"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "El mirroring de Zephyr no está permitido en esta organización"
 
@@ -5370,42 +5928,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "La disponibilidad no está soportada por los usuarios de bots."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "El cliente no paso valores nuevos."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token vacío o de longitud inválida"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Token APNS inválido"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5420,55 +5982,55 @@ msgstr "Al menos uno de los siguientes arguments debe estar presente: emoji_name
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Al menos un método de autentificación debe ser activado"
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Debes subir exactamente un archivo."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5502,7 +6064,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Debes subir exactamente un icono."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5530,71 +6092,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Debes pasar \"new_description\" o \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Valor inválido para \"op\". Especifica uno entre \"add\" o \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "¡El canal ya tiene ese nombre!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nada que hacer. Especifica al menos uno de \"add\" o \"delete\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Solo puedes invitar a otros usuarios del mirror de Zephyr a canales privados."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "nuevos canales"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5603,7 +6165,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "JSON inválido para el submensaje"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "No estás autorizado a ver este archivo.
"
 
@@ -5627,112 +6189,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr "El usuario ha desactivado las notificaciones de escritura para los mensajes directos."
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Debes especificar un archivo a subir"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Solo puedes subir un archivo a la vez"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "No se han proporcionado datos nuevos"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Los cambios de avatar están desactivados para esta organización."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Los cambios de dirección de correo electrónico están desactivados en esta organización."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Tu contraseña de Zulip está gestionada en LDAP."
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "¡Contraseña incorrecta!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "La nueva contraseña es demasiado poco segura."
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Debes subir exactamente un avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "El tema no está silenciado."
 
@@ -5793,43 +6355,43 @@ msgstr "Las direcciones de correo electrónico desechables no están disponibles
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5862,11 +6424,11 @@ msgstr "Payload invalido"
 msgid "Unknown webhook request"
 msgstr "Petición webhook desconocida"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "El tema no puede estar vacío"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "El contenido no puede estar vacío"
 
@@ -5893,7 +6455,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "No se pudo gestionar el payload de Pivotal"
 
@@ -5910,83 +6472,105 @@ msgstr "Mensaje de Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Dominio inválido para el bouncer de notificaciones push"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Debe validarse con una clave de API válida del servidor de Zulip"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Tipo de token inválido"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Los datos no están ordenados."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Debes reestablecer tu contraseña"
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP inválida"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/es/translations.json b/locale/es/translations.json
index 57086cd861..cb6fe9c804 100644
--- a/locale/es/translations.json
+++ b/locale/es/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(archivo adjunto)",
   "(forever)": "(Guardar para siempre)",
   "(hidden)": "(oculto)",
-  "(no description)": "(sin descripción)",
   "(no topic)": "(sin tema)",
   "(or )": "",
   "(you)": "(tu)",
   "({message_retention_days} days)": "({message_retention_days} días)",
   "/dark (Switch to the dark theme)": "/dark (Cambiar al tema oscuro)",
   "/light (Switch to light theme)": "/light (Cambiar al tema claro)",
-  "/me is excited (Display action text)": "/me se emociona (Mostrar texto de acción)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll ¿Donde deberíamos comer hoy? (Crear encuesta)",
-  "/todo (Create a todo list)": "/todo (Crear una lista de tareas)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 día",
   "1 hour": "1 hora",
   "1 week": "1 semana",
@@ -28,7 +27,7 @@
   "6 hours": "6 horas",
   "Total messages: {total_messages}": "Mensajes totales: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} será removido de los mensajes donde ha sido compartido. Esta acción no puede ser revertida.
",
-  "Stream will be announced in #{notifications_stream}.
": "El canal será anunciado en #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Estás buscando mensajes que fueron enviados por más de una persona, lo cual no es posible.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Estás buscando mensajes que pertenencen a más de un canal, lo cual no es posible.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Estás buscando mensajes que pertenencen a más de un tema, lo cual no es posible.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Actividad desconocida",
   "Add": "Añadir",
   "Add GIF": "Añadir GIF",
+  "Add a description": "",
   "Add a new alert word": "Añadir una nueva alerta",
   "Add a new bot": "Añadir un nuevo bot",
   "Add a new code playground": "Agregar un nuevo espacio para código fuente",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Correo del bot",
   "Bot email (a-z, 0-9, and dashes only)": "Correo electrónico del bot (solo a-z, 0-9 y guiones)",
+  "Bot is deactivated": "",
   "Bot owner": "Propietario del bot",
   "Bot type": "Tipo de bot",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Cerrar esta ventana modal",
   "Code": "Código",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Colapsar editor",
   "Collapse direct messages": "Colapsar mensajes directos",
   "Collapse message": "Colapsar mensaje",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configura los métodos de autentificación para tu organización.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configura los canales a los que los nuevos usuarios están suscritos por defecto cuando se unen a tu organización.",
   "Confirm": "Confirmar",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Considera buscar en todos los canales publicos.",
   "Contact a moderator to resolve this topic.": "Contacta a un administrador para cerrar este tema.",
   "Contact a moderator to unresolve this topic.": "Contacta a un administrador para reabrir este tema.",
@@ -292,6 +294,7 @@
   "Copy code": "Copiar código",
   "Copy link": "Copiar enlace",
   "Copy link to message": "Copiar el enlace al mensaje",
+  "Copy link to profile": "",
   "Copy link to topic": "Copiar el vínculo al tema",
   "Copy mention syntax": "Copiar la sintaxis de la mención",
   "Copy version": "Copiar Versión",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Eliminar todos los borradores",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "¿Eliminar campo personalizado de perfil?",
   "Delete data export?": "¿Eliminar exportación de datos?",
   "Delete draft": "Eliminar borrador",
@@ -413,7 +417,6 @@
   "Domain": "Dominio",
   "Don’t allow disposable email addresses": "No permitir direcciones de correo electrónico desechables",
   "Download": "Descargar",
-  "Download .zuliprc": "Descargar .zuliprc",
   "Download botserverrc": "Descargar botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Descargar la configuración de todos los bots con webhooks de salida activos en formato Zulip Botserver.",
   "Download file": "Descargar archivo",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Educación (lucro)",
   "Education (non-profit)": "Educación (sin-lucro)",
   "Effect": "Efecto",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Correo",
   "Email address": "Dirección de correo electrónico",
   "Email address changes are disabled in this organization.": "Los cambios de dirección de correo electrónico están desactivados en esta organización.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Por ejemplo, para configurar un playground para bloques de código Python, puedes usar:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Para más ejemplos y detalles ténicos, mira la documentación en el centro de ayuda a cerca de agregar playgrounds de código.",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "¿Lo olvidaste?",
@@ -606,6 +610,8 @@
   "Image": "Imagen",
   "In a meeting": "En una reunión",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inactivo",
   "Inactive bots": "Bots inactivos",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "Administrar este bot",
   "Manage this user": "Administrar este usuario",
   "Manage user": "Administrar usuario",
+  "Manage your API key": "",
   "March": "Marzo",
   "Mark all messages as read": "Marcar todos los mensajes como leídos",
   "Mark all messages as read?": "¿Marcar todos los mensajes como leídos?",
+  "Mark all messages as unread": "",
   "Mark as read": "Marcar como leído",
   "Mark as resolved": "Marcar como resuelto",
   "Mark as unread from here": "Marcar como no leido desde acá",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mencionado en",
   "Mentions": "Menciones",
   "Menus": "Menus",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Enviar mensaje a #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Enviar mensaje a #{stream_name} > {topic_name}",
   "Message actions": "Acciones del mensaje",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Enviar mensaje a {recipient_label}",
   "Message {recipient_names}": "Enviar mensaje a {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Enviar mensaje a {recipient_name} ({recipient_status})",
+  "Messages": "Mensajes",
   "Messages in all public streams": "Mensajes en todos los canales públicos",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Nunca expira",
   "New": "Nuevo",
   "New direct message": "Nuevo mensaje directo",
+  "New direct message from {sender_full_name}": "",
   "New email": "Nuevo correo",
   "New message": "Nuevo mensaje",
   "New option": "Nueva opción",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Siguiente mensaje directo no leido",
   "Next unread followed topic": "",
   "Next unread topic": "Siguiente tema sin leer",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "No hay bots que coincidan con tu filtro actual.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Sin descripción.",
   "No drafts selected": "",
   "No drafts.": "No hay borradores.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Ninguna invitación se ajusta a tu filtro actual",
   "No language set": "Idioma no establecido",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "No se aplicaron creadores de enlaces.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "No hay coincidencias de usuario.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Ningún tema ha sido marcado como resuelto.",
   "No topics match your current filter.": "No hay temas que coincidan con tu filtro actual.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "No hay subscripciones de grupo de usuarios.",
   "No user groups": "No hay grupos de usuarios.",
   "No user to subscribe.": "Ningún usuario para suscribirse.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Nadie en esta organización Zulip podrá ver esta dirección de email.",
   "Non-profit (registered)": "Sin ánimo de lucro (registrada)",
   "None": "Ninguno",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Ten en cuenta que cualquier bot que mantengas será desactivado.",
   "Note that organizations are limited to five exports per week.": "Ten en cuenta que cada organización solo se puede exportar hasta cinco veces por semana.",
   "Nothing to preview": "Nada que previsualizar",
@@ -932,6 +940,7 @@
   "Other permissions": "Otros permisos",
   "Other settings": "Otros ajustes",
   "Other users in this Zulip organization will be able to see this email address.": "Otros usuarios en esta organización Zulip podrán ver esta dirección de email.",
+  "Others": "",
   "Out sick": "Enfermo",
   "Outgoing webhook message format": "Formato del mensaje del webhook de salida",
   "Override default emoji?": "¿Sobreescribir emoji por defecto?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Hace obligatorio el uso de un tema en los mensajes en canales",
   "Research": "Investigación",
   "Resend": "Reenviar",
-  "Resend invitation": "Reenviar invitación",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Error al reenviar. Por favor, recarga la página e inténtalo de nuevo.",
+  "Reset to default notifications": "",
   "Reset zoom": "Reiniciar zoom",
   "Restore draft": "Restablecer borrador",
   "Restrict email domains of new users?": "¿Restringir los dominios de correo electrónico de los usuarios nuevos?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Buscar  en el tema o contenido de los mensajes",
   "Search people": "Buscar gente",
   "Search results": "Resultados de búsqueda",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Mira cómo configurar el correo.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Seleccionar un canal a continuación o cambiar el nombre del tema",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Mostrar contador de mensajes destacados",
   "Show status text": "Mostrar texto de estado",
   "Show unread counts for": "",
-  "Show/change your API key": "Mostrar/cambiar tu clave de API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Registrarse",
   "Silent mentions do not trigger notifications.": "Menciones silenciosas no envían notificaciones",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "El email del remitente",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "La descripción del canal no puede contener caracteres de nueva linea.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Su contraseña será eliminada de nuestros sistemas, y cualquier bot que mantengan será desactivado.",
   "Theme": "Tema",
+  "There are no bots.": "",
   "There are no current alert words.": "No hay palabras de alerta.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "No hay  mensajes acá.",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Este bot no se puede desactivar.",
   "This bot cannot be edited.": "Este bot no se puede editar.",
   "This bot has been deactivated.": "Este bot ha sido desactivado.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Jueves",
   "Time": "Fecha y hora",
   "Time format": "Formato de fecha y hora",
@@ -1240,6 +1259,7 @@
   "Today": "Hoy",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "Activa o desactiva la primera reacción de emoji en el mensaje seleccionado",
+  "Toggle preview mode": "",
   "Toggle subscription": "Activar/Desactivar suscripción",
   "Toggle the gear menu": "Abrir el menú engranaje",
   "Toggle topic mute": "Silenciar/no silenciar tema",
@@ -1374,7 +1394,7 @@
   "Which parts of the email should be included in the Zulip message sent to this stream?": "",
   "Who can access the stream?": "Quiénes pueden acceder el canal?",
   "Who can access user's email address": "",
-  "Who can access your email address": "",
+  "Who can access your email address": "Quiénes pueden acceder a tu dirección de correo",
   "Who can add bots": "Quiénes puede añadir bots",
   "Who can add custom emoji": "Quiénes pueden añadir emoticonos personalizados",
   "Who can add users to streams": "Quiénes pueden añadir usuarios a canales",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Servidor Zulip {display_version}",
   "Zulip Server {display_version} (modified)": "Servidor Zulip {display_version} (modificado)",
   "Zulip Server {display_version} (patched)": "Servidor Zulip {display_version} (parchado)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip necesita enviar correos para confirmar las direcciones de los usuarios y enviar notificaciones.",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "más temas",
   "she/her": "ella",
   "they/them": "elle",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {¡Hecho! {N} mensaje marcado como leído.} many {¡Hecho! {N} mensajes marcados como leídos.} other {¡Hecho! {N} mensajes marcados como leídos.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {¡Hecho! {N} mensaje marcado como no leído.} many {¡Hecho! {N} mensajes marcados como no leídos.} other {¡Hecho! {N} mensajes marcados como no leídos.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} many {} other {}}",
diff --git a/locale/fa/LC_MESSAGES/django.po b/locale/fa/LC_MESSAGES/django.po
index 323c39d833..f98f9c5a4e 100644
--- a/locale/fa/LC_MESSAGES/django.po
+++ b/locale/fa/LC_MESSAGES/django.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: rahim agh , 2023\n"
 "Language-Team: Persian (http://app.transifex.com/zulip/zulip/language/fa/)\n"
@@ -24,57 +24,51 @@ msgstr ""
 "Language: fa\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "کاربران مهمان دسترسی ندارند"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "سازمان نامعتبر است"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "جریانهای عمومی"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "جریانهای خصوصی"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "پیام خصوصی"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "پیام جمعی"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "جریانهای گمشده در نمودار: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "نام نمودار ناشناخته: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "تاریخ شروع پس از تاریخ پایان است. شروع: {start} ، پایان: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "داده های تحلیلی در دسترس نیست. لطفا با ادمین سرور تماس بگيريد. "
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "پارامترهای نامعتبر"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -83,7 +77,7 @@ msgid ""
 "users to join."
 msgstr "سازمان شما مجوز زولیپ دیگری ندارد و نمیتواند کاربر جدیدی دریافت کند. لطفاً با [افزایش تعداد مجوزها]({billing_page_link}) یا [حذف کاربران غیرفعال]({deactivate_user_help_page_link})، امکان عضویت کاربران جدید را فراهم کنید."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -92,7 +86,7 @@ msgid ""
 "join."
 msgstr "سازمان شما فقط یک مجوز زولیپ دیگر دارد. شما میتوانید با [افزایش تعداد مجوزها]({billing_page_link}) یا  [حذف کاربران غیرفعال]({deactivate_user_help_page_link})، اجازه عضویت کاربران جدید را ایجاد کنید."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -101,7 +95,7 @@ msgid ""
 "join."
 msgstr "سازمان شما فقط دو مجوز زولیپ دیگر دارد. شما میتوانید با [افزایش تعداد مجوزها]({billing_page_link}) یا [حذف کاربران غیرفعال]({deactivate_user_help_page_link})، اجازه عضویت کاربران جدید را ایجاد کنید."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -110,7 +104,7 @@ msgid ""
 "join."
 msgstr "سازمان شما فقط سه مجوز زولیپ دیگر دارد. شما میتوانید با [افزایش تعداد مجوزها]({billing_page_link}) یا [حذف کاربران غیرفعال]({deactivate_user_help_page_link})، اجازه عضویت کاربران جدید را ایجاد کنید."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -119,11 +113,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "کاربر جدید ({email})، نتوانسته است به سازمان شما متصل بشود چون تمای مجوزهای زولیپ شما در حال استفاده هستند. لطفاً با [افزایش تعداد مجوزها]({billing_page_link}) یا [حذف کاربران غیرفعال]({deactivate_user_help_page_link})، امکان عضویت کاربران جدید را فراهم کنید."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "تمام مجوزهای زولیپ برای این سازمان در حال استفاده هستند."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -139,124 +133,124 @@ msgstr "ثبتنام غیرفعال شدهاست"
 msgid "Invalid remote server."
 msgstr "سرور راه دور نامعتبر است."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "شما باید برای تمام کاربران فعال در سازمان خود مجوز خریداری کنید (حداقل {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "فاکتورهای با بیش از {max_licenses} مجوز، امکان پردازش از این صفحه را ندارند، برای تکمیل بهروزرسانی، با {email} تماس بگیرید."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "روش پرداختی در فایل وجود ندارد."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} در {last4} به پایان میرسد"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "چنین روش پرداختی وجود ندارد. لطفاً با {email} مکاتبه کنید."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "مشکلی پیش آمده. لطفاً با {email} مکاتبه کنید."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "مشکلی وجود دارد. لطفا دوباره صفحه را بارگذاری کنید."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "مشکلی وجود دارد. لطفا چند لحظه صبر کرده و دوباره تلاش کنید."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "لطفاً قبل از شروع آزمایش رایگان، یک کارت اعتباری اضافه کنید."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "لطفاً یک کارت اعتباری اضافه کنید تا برنامهریزی ارتقا انجام شود."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "امکان به روزرسانی این طرح نیست. این طرح منقضی شده و با طرح جدیدتری جابجا شده است."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "امکان بهروزرسانی این طرح نیست. این طرح پایان یافته است."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "نمیتوان محوزها را در دوره فعلی صورتحساب، برای طرح آزمایشی رایگان بهروزرسانی کرد."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "امکان بهروزرسانی مجوزها به صورت غیر اتوماتیک نیست. طرح شما بر روی حالت مدیریت اتوماتیک مجوزها است. "
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "طرح شما بر روی {licenses} مجوز، در دوره فاکتور جاری است."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "شما نمیتوانید در دوره فاکتور جاری تعدا مجوزها را کاهش دهید."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr "نمیتوانید مجوزها را برای دوره صورتحساب بعدی، برای یک طرح که در حال کاهش است، تغییر دهید."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "طرح شما در حال حاضر برای به روزرسانی با {licenses_at_next_renewal} مجوز، برنامهریزی شده است."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "چیزی برای تغییر نیست"
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "مشتری برای این سازمان نیست!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "جلسه پیدا نشد"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "باید یک ادمین فاکتور یا یک مالک سازمان باشد"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "هدف پرداخت پیدا نشد"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "stripe_session_id یا stripe_payment_intent_id را ارسال کنید"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -264,54 +258,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "درخواست سازمان شما برای میزبانی اسپانسری پذیرفته شده است! شما بدون هزینه به طرح {plan_name} ارتقا پیدا کردهاید. {emoji}\n\nاگر بتوانید {begin_link}زولیپ را به عنوان اسپانسر در وبسایت خود فهرست کنید{end_link}، ما بسیار سپاسپگزار خواهیم بود!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
-msgstr ""
+msgstr "پارامتر 'تایید شده' الزامی است"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "توکن دسترسی به صورتحساب منقضی شده است."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "توکن دسترسی به صورتحساب نامعتبر"
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr "خطا در مهاجرت مشتری از سرور به حوزهها رخ داد. لطفاً برای کمک با پشتیبانی تماس بگیرید."
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr "حساب کاربری هنوز وجود ندارد."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "برای ادامه دادن مراحل، باید شرایط خدمات را بپذیرید."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr "این zulip_org_id با سیستم مدیریت صورتحساب زولیپ ثبت نشده است."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr "کلید zulip_org_key برای این zulip_org_id نامعتبر است."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "ثبت نام سرور شما غیرفعال شده است."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "پارامترهای نامعتبر"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "خطا"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "متد معتبر نیست (۴۰۵)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "صفحه پیدا نشد (۴۰۴)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -320,8 +321,41 @@ msgid ""
 "                        "
 msgstr "\n                        اگر این خطا غیرمنتظره است میتوانید\n                        با پشتیبانی تماس بگیرید.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "متد معتبر نیست (۴۰۵)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "خطای داخلی در سرور"
 
@@ -426,7 +460,7 @@ msgstr "فعال های طی 15 روز"
 msgid "Total users"
 msgstr "همه کاربران"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "کاربران"
 
@@ -566,37 +600,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "مطمئن شوید که لینک تایید را به درستی در مرورگر کپی کردهاید. اگر هنوز مشکل دارید، احتمالاً مشکل از طرف ماست. متأسفیم. "
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "صورتحساب"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "بستن پنجره"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "بیخیال شو"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "تنزل نسخه"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "لغو کردن"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "تنزل نسخه"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "تایید"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "بیخیال شو"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr "لغو ارتقا"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "وضعیت قبضها"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "غیرفعال کردن ثبت سرور؟"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr "مدیریت طرح در دسترس نیست"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr " مدیریت برنامه برای این سازمان در دسترس نیست،\n                        زیرا سرور Zulip شما در حال حاضر در یک \n                        طرح %(server_plan_name)s است که تمام\n                        سازمانها را در این سرور پوشش میدهد.\n                        دستورات ورود را برای\n                        تمام نسخههای قدیمیتر سرور زولیپ\n                        دنبال کنید تا طرح خود را مدیریت کنید.\n                        "
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr " برای انتقال طرح از سرور به این سازمان\n                        یا سوالهای دیگر، با پشتیبانی تماس بگیرید.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr "\n                        مدیریت برنامه برای این سرور در دسترس نیست\n                        زیرا حداقل یک سازمان میزبانی شده در این سرور، یک طرح فعال دارد.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr "\n                        ورود برای مدیریت طرح سازمان\n                        یا تماس با پشتیبانی برای مطرح کردن سوالات.\n                        "
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "از حد مجاز گذشت"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "از حد مجاز گذشت."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "شما میتوانید %(retry_after)s ثانیه دیگر دوباره تلاش کنید."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "بهروزرسانی"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "قبل از بهروزرسانی، دمو سازمانی را تبدیل کنید."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -617,6 +747,451 @@ msgstr "دستهبندیها"
 msgid "All"
 msgstr "همه"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr "نامحدود"
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr "پشتیبانی شده"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr "خودمدیریتی"
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr "برای سازمانها با حداکثر 10 کاربر"
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr "موجود نیست"
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "جامعه توسعهدهنده زولیپ"
@@ -636,11 +1211,7 @@ msgstr "وصل شدن به عنوان یک خود-میزبان"
 msgid "Join as a contributor"
 msgstr "وصل شده به عنوان یک مشارکتکننده"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "وضعیت قبضها"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -655,12 +1226,12 @@ msgstr "وضعیت قبضها"
 msgid "Create organization"
 msgstr "ایجاد سازمان "
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "طرحها و قیمتها"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -693,51 +1264,48 @@ msgstr "قیمتهای آموزشی"
 msgid "View pricing"
 msgstr "مشاهده قیمتها"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "زولیپ برای کسب و کار"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "تماس با پشتیبانی"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "از"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "سازمان"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "موضوع"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "پیام"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "تایید"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "تشکر بابت تماس با ما"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "تشکر بابت تماس با ما!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "ما به زودی با شما تماس خواهیم گرفت."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -753,14 +1321,6 @@ msgstr "آواتار "
 msgid "Try Zulip now"
 msgstr "الان زولیپ را امتحان کنید"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "بهروزرسانی"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "قبل از بهروزرسانی، دمو سازمانی را تبدیل کنید."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -808,7 +1368,7 @@ msgstr "ادامه"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "ثبت نام"
 
@@ -841,8 +1401,8 @@ msgstr "آیا حساب کاربری دارید؟"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "ورود"
 
@@ -875,26 +1435,22 @@ msgstr "اگر این پیام در صفحه باقی ماند، صفحه را 
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "خطا در بارگیری زولیپ. سعی کنید صفحه را دوباره بارگیری کنید."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "اتصال به زولیپ ممکن نیست."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "بهروزرسانی ممکن است تاخیر داشته باشد"
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "تلاش مجدد، بهزودی..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "هم اکنون سعی کن."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "پبامها"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "خطای اعتبارسنجی زیردامنه"
@@ -1117,21 +1673,21 @@ msgstr "کاربران مهمان "
 msgid "Normal users"
 msgstr "کاربران معمولی"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "ارسال ایمیلها به یک حساب ایمیل دیگر"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "بستن"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "به روز رسانی"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "زولیپ "
 
@@ -2308,23 +2864,23 @@ msgid ""
 "\n"
 "    Click the button below to confirm your email and log in to Zulip plan management for %(remote_realm_host)s.\n"
 "    "
-msgstr ""
+msgstr "\nکلیک کنید تا ایمیل خود را تأیید کنید و وارد مدیریت طرح زولیپ برای %(remote_realm_host)s شوید."
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.html:14
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:4
 msgid "Confirm and log in"
-msgstr ""
+msgstr "تأیید و ورود به سیستم"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.subject.txt:1
 msgid "Confirm email for Zulip plan management"
-msgstr ""
+msgstr "تأیید ایمیل برای مدیریت طرح زولیپ"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:1
 #, python-format
 msgid ""
 "Click the link below to confirm your email and log in to Zulip plan "
 "management for %(remote_realm_host)s."
-msgstr ""
+msgstr "برای تأیید ایمیل خود و ورود به مدیریت طرح زولیپ %(remote_realm_host)s،  روی لینک زیر کلیک کنید."
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.html:9
 #, python-format
@@ -2354,7 +2910,7 @@ msgstr "درخواست شما برای حمایت از زولیپ تایید ش
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr "اگر بتوانید زولیپ را به عنوان یک حامی در وبسایت خود لیست کنید، واقعاً قدردانی میکنیم!"
 
 #: templates/zerver/find_account.html:4
@@ -2374,7 +2930,16 @@ msgid ""
 "                    "
 msgstr "\n                    ایمیلها ارسال شد! شما فقط ایمیلهای مرتبط با سازمانهای زولیپ \n                    مرتبط را دریافت خواهید کرد. آدرسهای وارد شده\n                    در صفحه قبل، در زیر فهرست شدهاند:\n                    "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2384,12 +2949,12 @@ msgid ""
 "                    "
 msgstr "\n                    ایمیل خود را وارد کنید تا ایمیلی به همراه لینک به تمام\n                    سازمانهای ابری زولیپ که در آنها حساب کاربری فعال دارید\n                    دریافت کنید. اگر کلمه عبور خود را فراموش کردهاید میتوانید\n                   بازنشانی کلمه عبور کنید.\n                    "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "آدرس ایمیل"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "پیدا کردن حسابهای کاربری "
 
@@ -2421,7 +2986,7 @@ msgstr "یکپارچهسازیها"
 msgid "Desktop & mobile apps"
 msgstr "برنامه های موبایل و کامپیوتر"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "سازمان جدید "
 
@@ -2789,13 +3354,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "لطفاً با فردی که شما را دعوت کردهاست تماس بگیرید تا تعداد مجوزها را افزایش دهند، سپس دوباره تلاش کنید."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "از حد مجاز گذشت"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "از حد مجاز گذشت."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2803,11 +3364,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "شما به حداکثر دفعات مجازی رسیدهاید\n                        که یک کاربر میتواند این عملیات را اجرا کند."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "شما میتوانید %(retry_after)s ثانیه دیگر دوباره تلاش کنید."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2976,6 +3532,22 @@ msgstr "به چه چیز علاقمندید؟"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "من را در خبرنامه کمترافیک زولیپ مشترک کن (چند ایمیل در سال)"
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr "ثبت نام غیرمنتظره سرور زولیپ"
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr "\nسازمان زولیپ شما به عنوان یک سازمان مرتبط با \nنصب سرور زولیپ دیگری، ثبت شده است.\n\nلطفاً برای کمک در حل این مشکل ب\nا پشتیبانی زولیپ تماس بگیرید."
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "تنظیم مجدد کلمه عبورتان"
@@ -3133,123 +3705,107 @@ msgid ""
 "                        "
 msgstr "\n                        شما همچنین میتوانید اپ دسکتاپ زولیپ را استفاده کنید.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr "ثبت نام غیرمنتظره سرور زولیپ"
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr "\nسازمان زولیپ شما به عنوان یک سازمان مرتبط با \nنصب سرور زولیپ دیگری، ثبت شده است.\n\nلطفاً برای کمک در حل این مشکل ب\nا پشتیبانی زولیپ تماس بگیرید."
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "عضویتها"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} همین الان در زولیپ ثبت نام کرد. (مجموع: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} دعوت شما را برای پیوستن به زولیپ پذیرفت!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "نمی توان یک حساب نگهدارنده را فعال کرد. از کاربر بخواهید در عوض، ثبت نام کند."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "طرح سفارش نامعتبر است. "
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "فیلد شناسه {id} یافت نشد. "
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "نام گروه جریان پیشفرض نامعتبر است '{group_name}'"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr "نام گروه جریان پیشفرض بسیار طولانی است (محدودیت: {max_length} کاراکتر)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr "نام گروه جریان پیشفرض '{group_name}' شامل کاراکترهای نال (0x00) است. "
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr "گروه جریان پیشفرض نامعتبر {group_name}"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "جریان '{stream_name}' یک جریان پیشفرض است و نمیتواند به '{group_name}' اضافه شود"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "گروه جریان پیشفرض '{group_name}' از قبل وجود دارد"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "جریان '{stream_name}' در حال حاضر در گروه جریان پیشفرض '{group_name}' وجود دارد"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "جریان '{stream_name}' در گروه جریان پیشفرض '{group_name}' وجود ندارد"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr "این گروه جریان پیشفرض از قبل '{group_name}' نام دارد"
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "برای محافظت کاربران، زولیپ تعدا دعوتنامهای را که در یک روز میتوانید بفرستید، محدود کرده است. چون به این محدودیت رسیدهاید هیچ دعوتنامهای ارسال نشد."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "حساب کاربری شما جدیدا ايجاد شده است و نمیتوانید در این سازمان دعوت ارسال کنید. از یک ادمین سازمان یا یک کاربر با تجربه تر بخواهید. "
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "برخی از ایمیل ها معتبر نیستند، بنابراین هیچ دعوتی ارسال نشد. "
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "دیگر نمی توانیم بیش از این دعوت داشته باشیم. "
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3279,72 +3835,72 @@ msgstr "هنگام تغییر جریان، نمیتوان محتوای پیا
 msgid "Widgets cannot be edited."
 msgstr "ابزارکها قابل اصلاح نیستند."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "سازمان شما ویرایش پیام را غیرفعال کرده است"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "شما دسترسی ویرایش این پیام را ندارید"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "محدوده زمان ویرایش این پیام گذشته است"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} این موضوع را به حل شده تبدیل کرد."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} این موضوع را به حلنشده تبدیل کرد."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "این موضوع توسط {user} به {new_location} جابجا شدهاست."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "یک پیام از این موضوع توسط {user} به {new_location} منتقل شد."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "تعداد {changed_messages_count} پیام از این موضوع توسط {user} به {new_location} منتقل شد."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "این موضوع توسط {user} از {old_location} جابجا شدهاست."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[یک پیام]({message_link}) توسط {user} از  {old_location} جابجا شد."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "تعداد {changed_messages_count} پیام توسط  {user} از  {old_location} به اینجا منتقل شد."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "سازمان شما ویرایش پیام را غیرفعال کرده است"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "شما دسترسی ویرایش این پیام را ندارید"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "محدوده زمان ویرایش این پیام گذشته است"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "محدوده زمانی برای ویرایش موضوع این پیام گذشته است."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "شما اجازه ندارید این پیام را جابجا کنید"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "محدوده زمانی برای ویرایش جریان این پیام گذشته است"
 
@@ -3363,137 +3919,142 @@ msgstr "پرچم غیر قابل اصلاح: '{flag}'"
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "عملکرد پرچم پیام نامعتبر است: '{operation}'"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "پیام(های) نامعتبر "
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "امکان پردازش پیام وجود ندارد"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "دقیقاً یک جریان انتظار میرود"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "نوع داده برای جریان نامعتبر است"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "نوع داده برای گیرندگان نامعتبر است"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "فهرست گیرندگان ممکن است شامل یکی از دو مورد ایمیل یا شناسه کاربری باشد، نه هردو آنها."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "ربات {bot_identity} شما تلاش کرده تا پیامی را به شناسه جریان {stream_id} بفرستد، اما جریانی با این شناسه وجود ندارد."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "ربات {bot_identity} شما تلاش کرده تا پیامی را به جریان {stream_name} بفرستد، اما این جریان وجود ندارد. برای ساخت آن [اینجا]({new_stream_link}) را کلید کنید."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "ربات {bot_identity} تلاش کرده تا پیامی را به جریان {stream_name} بفرستد. این جریان وجود دارد اما هیچ مشترکی ندارد."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "پیامهای مستقیم در این سازمان غیر فعال شدهاند."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr "شما اجازه ندارید به برخی گیرندگان دسترسی داشته باشید."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "موضوعات در این سازمان ضروری هستند"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "گجت ها: API برنامه نویسی، محتوای Json نامعتبری ارسال کرده است"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "ابزارکها: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "یک ایموجی سفارشی با این نام قبلا تعریف شده است."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr "لیست مرتبشده نباید حاوی پیونددهنده تکراری باشد"
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr "لیست مرتب شده باید تمام پیونددهندههای موجود را دقیقاً یک بار شمارش کند"
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "پیام برنامهریزی شده قبلاً ارسال شدهاست"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "برنامهریزی زمان ارسال باید در آینده باشد."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "پیام نمیتواند در زمان برنامهریزی شده ارسال شود."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "پیامی که برای {delivery_datetime} برنامهریزی کرده بودید به دلیل خطای زیر ارسال نشد:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[مشاهده پیامهای برنامهریزی شده](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "جریان بسته شده است"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "جریان در حال حاضر غیرفعال نیست"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "نام جریان {stream_name} از قبل وجود دارد"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "جریان {stream_name} از بایگانی خارج شد."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} برای این جریان [مجوزهای دسترسی](/help/stream-permissions) را از **{old_policy}** به  **{new_policy}** تغییر داد."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3502,38 +4063,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} برای این جریان [مجوزهای پستکردن](/help/stream-sending-policy) را تغییر داد:\n\n* **مجوزهای قدیمی**: {old_policy}.\n* **مجوزهای جدید**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} نام جریان {old_stream_name} را به {new_stream_name} تغییر داد."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "بدون توضیح"
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} توضیحات مربوط به این جریان را تغییر داد."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "شرح قدیمی"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "شرح جدید"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "همیشگی"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "پیامهای موجود در این جریان اکنون برای همیشه حفظ خواهند شد."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3547,7 +4108,7 @@ msgstr "{user} برای این جریان [دوره نگهداری پیام](/he
 msgid "You cannot attach a submessage to this message."
 msgstr "شما نمیتوانید یک زیرپیام به این پیام متصل کنید."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr "شناسه کاربری نامعتبر {user_id}"
@@ -3557,187 +4118,187 @@ msgstr "شناسه کاربری نامعتبر {user_id}"
 msgid "User group '{group_name}' already exists."
 msgstr "گروه کاربری '{group_name}' از قبل وجود دارد"
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "این API برای ربات های با وب هوک ورودی امکان پذیر نیست. "
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "حساب کاربری ارتباطی با زیردامنه ندارد "
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "این پایانه درخواست های ربات ها را قبول نمی کند"
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "باید یک ادمین سرور باشید"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "دسترسی کافی ندارید"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "این پایانه نیاز به احراز هویت پایه ای HTTP دارد. "
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "هدر مجوز برای احراز هویت پایه ای نامعتبر است "
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "فاقد هدر مجوز برای احراز هویت پایه ای است"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "ربات های وب هوک تنها می توانند به وب هوک ها دسترسی داشته باشند"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "حساب کاربری شما {username} غیر فعال شده است. لطفاً برای فعال کردن مجدد آن با ادمین سازمان تماس بگیرید."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "کلمه عبور بسیار ضعیف است."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "طول زیردامنه باید 3 یا بیشتر باشد. "
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "زیردامنه نمیتواند با '-' شروع شود. "
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "زیردامنه تنها میتواند شامل حروف کوچک، اعداد و '-' باشد. "
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "زیردامنه در حال حاضر در حال استفاده است. لطفا یکی دیگر را انتخاب کنید."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "زیردامنه محفوظ است. لطفا یکی دیگر را انتخاب کنید."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "لطفا از آدرس ایمیل واقعی خود استفاده کنید. "
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "سازمانی که قصد عضویت در آن با استفاده از {email} را دارید وجود ندارد. "
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "لطفاً از ادمین سازمان درخواست یک دعوت برای {email} کنید. "
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "آدرس ایمیل شما، {email}، در هیچکدام از دامنههای تعریف شده برای ثبت نام حساب های کاربری در این سازمان، نیست. "
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "آدرسهای ایمیل شامل + در این سازمان مجاز نیستند. "
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "کاربران جدید نمیتوانند به این سازمان متصل شوند چرا که تمام مجوزهای زولیپ استفاده شدهاند. لطفاً با کسی که شما را دعوت کرده است تماس بگیرید و بخواهید که تعداد مجوزها را افزایش دهند، سپس دوباره تلاش کنید."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "کلمه عبور جدید"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "تأیید کلمه عبور جدید"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr "شما دفعات زیادی برای ورود به سیستم تلاش کردید. بعد از {seconds} دوباره امتحان کنید یا برای دریافت راهنمایی با ادمین سازمان خود تماس بگیرید."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "کلمه عبور شما غیرفعال شده است چرا که بیش از حد ساده بود. کلمه عبور خود را بازنشانی کنید و یک کلمه عبور جدید تعیین کنید."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "توکن"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "راهنما: شما میتوانید چندین آدرس ایمیل را که با ویرگول جدا شده باشند وارد کنید."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "لطفا حداکثر 10 ایمیل وارد کنید. "
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "ما نمیتوانیم این سازمان زولیپ را پیدا کنیم. "
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "ایمیل نامعتبر '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "موضوع وجود ندارد "
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "نمی توان به چند جریان ارسال کرد"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "جریان وجود ندارد "
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "پیام باید دریافت کننده داشته باشد "
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "نوع پیام اشتباه است"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "پیوست اشتباه است"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "هنگام حذف پیوست خطایی رخ داد. لطفا بعدا دوباره تلاش کنید. "
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "پیام باید دریافت کننده داشته باشد! "
 
@@ -3794,88 +4355,88 @@ msgstr "کاربر همگامسازی پیش نویسها را غیرفع
 msgid "Draft does not exist"
 msgstr "پیشنویس وجود ندارد"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "برای دیدن محتوای اسپویلر، زولیپ را باز کنید"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr "اطلاعرسانیهای {service_name}"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "آدرس نامعتبر است. "
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "خارج از دامنه شما است. "
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "آدرس های ایمیل شامل + مجاز نیستند. "
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "برای رباتهای سیستم رزرو شده است."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "ایمیل {email} یک حساب کاربری دارد"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "قبلاً یک حساب کاربری دارد. "
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "حساب کاربری غیر فعال شده است. "
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "ایموجی '{emoji_name}' موجود نیست"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "ایموجی سفارشی اشتباه است. "
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "نام ایموجی سفارشی اشتباه است. "
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "این ایموجی سفارشی غیر فعال شده است. "
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "کد ایموجی اشتباه است. "
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "نام ایموجی اشتباه است. "
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "نوع ایموجی اشتباه است. "
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "باید یک ادمین سازمان یا مالک ایموجی باشید"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "نام ایموجیها باید با یک حرف یا یک عدد تمام شود"
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "نام ایموجی ها باید فقط شامل حروف کوچک انگلیسی، اعداد، فاصله، خط تیره و زیرخط باشد."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "نام ایموجی گم شده است"
 
@@ -3883,119 +4444,119 @@ msgstr "نام ایموجی گم شده است"
 msgid "Could not allocate event queue"
 msgstr "امکان تخصیص صف برای رویداد وجود ندارد "
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "در سامانه نیستید: احراز هویت API یا نشست کاربر لازم است"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "جریان '{stream}' وجود ندارد "
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "جریان با شناسه '{stream_id}' وجود ندارد "
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "مالک سازمان"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "کاربر"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "امکان غیر فعال کردن تنها {entity} وجود ندارد "
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "مارکداون نامعتبر در بیانیه وجود دارد: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "استفاده از API بیش از نرخ مجاز است"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Json نادرست "
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "باید یک عضو سازمان باشد"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "باید یک ادمین سازمان باشید"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "باید یک مالک سازمان باشد"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "نام کاربری یا کلمه عبور شما صحیح نیست"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "حساب کاربری غیر فعال می شود"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "این سازمان غیرفعال شده است "
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "ثبت نام سرویس اعلان فشاری موبایل برای سرور شما غیرفعال شده است"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "اعتبارسنجی کلمه عبور در این سازمان غیرفعال شده است"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "کلمه عبور شما غیرفعال شده و باید دوباره تعیین شود"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "کلید API اشتباه"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "کلید API نادرست"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr "رویداد '{event_type}' در حال حاضر توسط وب هوک {webhook_name} پشتیبانی نمیشود. نادیده گرفتن"
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "تجزیه درخواست ممکن نیست: آیا {webhook_name} این رویداد را ایجاد کرده است؟"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "کاربر اعبتارسنجی نشد"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "زیردامنه نامعتبر است"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "دسترسی محدود"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4003,47 +4564,47 @@ msgid ""
 "messages in this topic."
 msgstr "شما فقط مجاز هستید که {total_messages_in_topic}/{total_messages_allowed_to_move} پیام اخیر در این موضوع را جابجا کنید."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "واکنش هم اکنون وجود دارد. "
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "واکنش وجود ندارد"
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr "سازمان شما در یک سرور زولیپ متفاوت ثبت شده است. لطفاً برای کمک در حل این مشکل با پشتیبانی زولیپ تماس بگیرید."
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr "سازمان ثبت نشد"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "شما اجازه استفاده از اشارههای وایلدکارت را در این جریان ندارید."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "شما اجازه استفاده از اشارههای وایلدکارت را در این موضوع ندارید."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "نام کاربری توییتر"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "نام کاربری گیتهاب"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "حساب کاربری خارجی سفارشی باید الگوی URL را تعریف کند"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "نوع حساب کاربری خارجی نامعتبر است"
 
@@ -4141,106 +4702,106 @@ msgstr "بهره وری"
 msgid "Version control"
 msgstr "کنترل نسخه"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "پیام نباید خالی باشد "
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "پیام نباید شامل بایت های نال (خالی) باشد"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr "شما مجاز به اشاره کردن به گروه کاربری '{user_group_name}' نیستید. برای اشارهکردن به این گروه، باید عضو '{can_mention_group_name}' باشید."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr "اپراتور {operator} پشتیبانی نمیشود."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "عملگر محدودسازی اشتباه است: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "مقدار 'anchor' موجود نیست."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "لنگر نامعتبر"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "اگر در زولیپ تازهکار هستید، [راهنمای استفاده از زولیپ برای کلاس]({getting_started_url}) را بررسی کنید!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "اگر در زولیپ تازهکار هستید، [راهنمای استفاده از زولیپ برای کلاس]({getting_started_url}) را بررسی کنید!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "ما همچنین راهنمایی برای [راهاندازی زولیپ برای یک کلاس]({organization_setup_url}) داریم."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "ما همچنین راهنمایی برای [راهاندازی سازمان خودتان]({organization_setup_url}) داریم."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "توجه کنید که این یک [سازمان آزمایشی]({demo_organization_help_url}) است و ظرف 30 روز **به صورت خودکار حدف میشود**."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "سلام و به زولیپ خوش آمدید!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "این یک پیام مستقیم از طرف من است، ربات خوش آمدگو."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "من همچنین میتوانم به شما در راهاندازی کمک کنم! برای پاسخ کافیست روی هر نقطه از این پیام کلیک کنید یا `r` را فشار دهید."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr " در اینجا چند پیام است که من درک میکنم:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "میتوانید [برنامههای موبایل و دسکتاپ](/apps/) را [دانلود کنید](/apps/). زولیپ همچنین در یک مرورگر عالی کار میکند."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "برای افزودن [تصویر پروفایل](/help/change-your-profile-picture) به [تنظیمات پروفایل](#settings/profile) بروید و [اطلاعات پروفایل](/help/edit-your-profile) خود را ویرایش کنید."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4249,119 +4810,119 @@ msgid ""
 "experience."
 msgstr "به [اولویتهای شخصی](#settings/preferences) بروید تا [تغییر بین زمینههای روشن و تیره](/help/dark-theme)، [انتخاب مجموعه ایموجی مورد علاقه خود](/help/emoji-and-emoticons#change-your -emoji-set)، [انتخاب زبان](/help/change-your-language) و تغییرات دیگر را در زولیپ تجربه کنید."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "در زولیپ، جریانها [تعیین میکنند چه کسی پیامی دریافت میکند](/help/streams-and-topics). آنها شبیه کانالها در دیگر برنامههای چت هستند."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[مرورکردن و مشترک شدن در جریانها](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "در زولیپ، موضوعات [به شما میگویند یک پیام درباره چیست](/help/streams-and-topics). آنها سرفصلهای سبک وزن و بسیار شبیه به موضوع یک ایمیل هستند."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "[مکالمات اخیر](#recent) را بررسی کنید تا ببینید چه خبر است! میتوانید با کلیک روی «پیامهای مستقیم» در بالا سمت چپ، به این مکالمه بازگردید."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "[میانبرهای صفحهکلید](#keyboard-shortcuts) زولیپ به شما امکان میدهد برنامه را سریع و کارآمد پیمایش کنید."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "در هر زمانی `?` را بزنید تا یک [صفحه تقلب](#keyboard-shortcuts) ببینیند."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "زولیپ از [Markdown](/help/format-your-message-using-markdown)، که یک قالب بصری است برای **پررنگ**، *مورب*، لیستهای گلولهای و موارد دیگر استفاده میکند. برای یک برگه تقلب [اینجا](#message-formatting) را کلیک کنید."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "[نکتههای پیامرسانی](/help/messaging-tips) ما را بررسی کنید تا در مورد واکنشهای ایموجی، بلوکهای کد و موارد دیگر بیاموزید!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "[راهنمای شروع به کار](/help/getting-started-with-zulip) ما را بررسی کنید، یا برای کسب اطلاعات بیشتر، [مرکز کمکرسانی](/help/) را مرور کنید!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "متاسفم، پیام شما را متوجه نشدم. لطفا یکی از دستورات زیر را امتحان کنید:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "این یک جریان خصوصی است، همانطور که با نماد قفل در کنار نام جریان نشان داده شده است."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "جریانهای خصوصی فقط برای اعضا جریان قابل مشاهده هستند."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "برای مدیریت این جریان به [تنظیمات جریان]({stream_settings_url}) بروید و بر روی `{initial_private_stream_name}` کلیک کنید."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "این یک پیام در جریان #**{default_notification_stream_name}** با موضوع `topic demonstration` است."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "موضوعات ابزارهای سبکی برای سازماندهی مکالمات هستند."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "شما میتوانید مطالب بیشتری درباره موضوعات در بخش [جریانها و موضوعات]({about_topics_help_url}) یاد بگیرید."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "این یک پیام در جریان #**{default_notification_stream_name}** با موضوع `لاکپشتهای شناگر` است."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr "هر زمانی که به پیام قبلی پاسخ نمیدهید، [یک موضوع جدید را شروع کنید]({start_topic_help_url})."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "جیسون نامعتبر در پاسخ"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "فرمت پاسخ نامعتبر"
 
@@ -4375,45 +4936,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "گزینههای GCM نامعتبر برای بانسر:  {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "توکن وجود ندارد"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "این سازمان نمایش محتوای پیام در اعلانهای فشاری تلفن همراه را غیرفعال کرده است"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} به @{user_group_name} اشاره کرده:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} به شما اشاره کرده:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} به همه اشاره کرده:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "اعلان آزمایشی"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr "این یک اعلان آزمایشی از {realm_name} ({realm_uri}) است."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "دستگاه شناسایی نشد"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr "دستگاه توسط push bouncer شناسایی نشد"
 
@@ -4425,23 +4986,23 @@ msgstr "نوع داده برای شناسه جریان نامعتبر است"
 msgid "Recipient list may only contain user IDs"
 msgstr "لیست گیرندگان فقط میتواند شامل شناسه کاربران باشد"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "کاربر اجازه این درخواست را ندارد "
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' دیگر از زولیپ استفاده نمیکند."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "شما نمیتوانید پیام های مستقیم را خارج از سازمان خود ارسال کنید."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr "خطای bouncer اعلان فشاری: {error}"
@@ -4461,21 +5022,21 @@ msgstr "آرگومان '{var_name}' خالی است"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "مقدار '{var_name}' نادرست است: {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "بارگذاری بدشکل"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "آرگومان \"{name}\" یک جیسون معتبر نیست"
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "پیام برنامهریزی شده وجود ندارد"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr "امنیت اکانت {service_name}"
@@ -4512,7 +5073,7 @@ msgstr "لطفا یکی را انتخاب کنید: 'جریان' یا 'شناس
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "شناسه جریان نامعتبر"
 
@@ -4526,7 +5087,7 @@ msgstr "نام جریان '{stream_name}' قبلاً گرفته شده است."
 msgid "Invalid stream name '{stream_name}'"
 msgstr "نام جریان نامعتبر '{stream_name}'"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "یک جریان پیشفرض نمیتواند خصوصی باشد."
 
@@ -4535,7 +5096,7 @@ msgstr "یک جریان پیشفرض نمیتواند خصوصی باشد.
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "جریان(های) ({stream_names}) وجود ندارد"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "جریانهای وب عمومی فعال نیستند."
 
@@ -4567,28 +5128,28 @@ msgstr "موضوع نمیتواندخالی باشد!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr "کاراکتر نامعتبر در نام موضوع وجود دارد، در موقعیت {position}!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "اطلاعات عضو برای این جریان در دسترس نیست "
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "قادر به دریافت اعضای جریان خصوصی نیست"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} یک مقدار بولی نیست"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} یک تاریخ نیست"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} یک دیکشنری نیست"
@@ -4599,18 +5160,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr "آرگومان \"{argument}\" در  {var_name} غیرمنتظره است"
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} عدد اعشاری نیست"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} زیادی کوتاه است"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} عدد صحیح نیست"
@@ -4620,24 +5181,24 @@ msgstr "{var_name} عدد صحیح نیست"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} یک جیسون معتبر نیست"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} زیادی بلند است"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} یک لیست نیست"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} نامعتبر"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} خیلی طولانی است (محدودیت: {max_length} کاراکتر)"
@@ -4647,8 +5208,8 @@ msgstr "{var_name} خیلی طولانی است (محدودیت: {max_length} ک
 msgid "{var_name} is too short."
 msgstr "{var_name} بسیار کوتاه است."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} یک رشته حروف نیست"
@@ -4667,21 +5228,21 @@ msgstr "نامعتبر {var_name}: {msg}"
 msgid "Upload would exceed your organization's upload quota."
 msgstr "بارگذاری از حد تعیین شده برای سازمان بیش تر است."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "امکان بازکردن تصویر وجود ندارد؛ آیا یک فایل تصویری بارگذاری کردید؟"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "اندازه تصویر بیش از حدمجاز است."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "تصویر متحرک خراب."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "قالب تصویر متحرک ناشناخته."
 
@@ -4738,161 +5299,161 @@ msgstr "نام گروه نمیتواند از {max_length} کاراکتر ف
 msgid "User group name cannot start with '{prefix}'."
 msgstr "نام گروه نمیتواند با کاراکتر '{prefix}' آغاز شود."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "نام خیلی طولانی است!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "نام خیلی کوتاه است!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "کاراکترهای اشتباه در نام وجود دارد!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "فرمت نامعتبر!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "نام قبلا استفاده شده است!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "نام یا نام کاربری نادرست است"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "ادغام نامعتبر '{integration_name}'."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr "پارامترهای گمشده پیکربندی: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr "خطای کلید {key} مقدار {value} نامعتبر ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "اطلاعات پیکربندی اشتباه است!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "نوع ربات اشتباه است"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "نوع رابط اشتباه است"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr "شناسه کاربر نامعتبر: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "چنین رباتی وجود ندارد"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "چنین کاربری وجود ندارد"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "کاربر غیرفعال شده است "
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} نمی تواند خالی باشد."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr " {var_name} طول نادرست {length} را دارد که باید {target_length} باشد"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} یک منطقه زمانی شناخته شده نیست"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} یک کد رنگ هگز معتبر نیست"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} باید دقیقاً {length} عضو داشته باشد"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "مقدار {key_name} از {var_name} گم شده است"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr "آرگومان غیرمنتظره: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} یک نوع داده مجاز نیست"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} اشتباه است)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} یک URL نیست"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "قالب آدرس باید شامل '%(username)s' باشد."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' نمی تواند خالی باشد."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "فیلد نباید دارای گزینههای تکراری باشد."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' یک گزینه صحیح برای '{field_name}' نیست."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} یک فهرست از رشته حروف یا اعداد صحیح نیست"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} از نوع رشته حروف یا عدد صحیح نیست"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} یک طول مشخص ندارد"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} گم شده است"
@@ -4926,215 +5487,211 @@ msgstr "خطای CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr "پیکربندی غلط ریورس پروکسی: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "رویدادهای جریان"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "در زولیپ کلود استاندارد در دسترس است. ارتقا دهید تا دسترسی داشته باشید."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr "بر روی زولیپ ابری پلاس در دسترس است. ارتقا دهید تا دسترسی داشته باشید."
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "ادغام GIPHY غیرفعال شد"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "گیفهای رده Y (مخاطبان خیلی جوان) مجاز هستند"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "گیفهای رده G (مخاطبان عمومی) مجاز هستند"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "گیفهای رده PG (تخت نظر والدین) مجاز هستند"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "گیفهای رده PG-13 مجاز است (زیر نظر والدین - زیر ۱۳ سال)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "گیفهای با رده R (محدودشده) مجاز باشد"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "کاراکترهای اشتباه در نام ایموجی وجود دارد "
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr "رگولار اکسپرشن بد: {regex}"
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "خطای رگولار اکسپرشن ناشناخته"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "قالب آدرس نامعتبر"
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "گروه %(name)r در قالب URL در الگوی پیونددهنده وجود ندارد."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "گروه %(name)r در الگوی پیونددهنده در الگوی URL وجود ندارد."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "کاراکترهای نامعتبر در زبان پیگمنت"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr "متغیر مورد نیاز \"code\" در قالب URL وجود ندارد"
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr "متغیر \"code\" باید تنها متغیر موجود در قالب URL باشد"
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "ادمینها، مدیران، اعضا و مهمانها"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "ادمینها، مدیران و اعضا"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "ادمینها و مدیران"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "فقط ادمینها"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "هیچ کس"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "کاربر ناشناس"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "مالک سازمان"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "ادمین سازمان"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "مجری"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "عضو"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "مهمان"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "وب-عمومی"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "عمومی"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "سابقه به اشتراک گذاشته شده، خصوصی"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "سابقه محافظت شده، خصوصی"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "عمومی،سابقه محافظت شده"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "تمام اعضای جریان میتوانند پست ارسال کنند"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "فقط ادمینهای سازمان میتوانند پست ارسال کنند"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "فقط ادمینهای سازمان و مدیران میتوانند پست ارسال کنند"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "فقط اعضای اصلی سازمان میتوانند پست ارسال کنند"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "ایموجی یونیکد"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "ایموجی سفارشی"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "ایموجیهای بیشتر زولیپ"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr "کاربر با شناسه {user_id} غیر فعال شده است"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr "کاربر با شناسه {user_id} یک ربات است"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "لیست گزینه ها"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "انتخاب کننده فرد"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "متن کوتاه"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "متن طولانی"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "انتخاب تاریخ"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "لینک"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "حساب کاربری خارجی"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "ضمایر"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "رگولار اکسپرشن بد: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "خطای رگولار اکسپرشن ناشناخته"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "قالب آدرس نامعتبر"
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "گروه %(name)r در قالب URL در الگوی پیونددهنده وجود ندارد."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "گروه %(name)r در الگوی پیونددهنده در الگوی URL وجود ندارد."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "ایموجی یونیکد"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "ایموجی سفارشی"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "ایموجیهای بیشتر زولیپ"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "کاراکترهای اشتباه در نام ایموجی وجود دارد "
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "کاراکترهای نامعتبر در زبان پیگمنت"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "متغیر مورد نیاز \"code\" در قالب URL وجود ندارد"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "متغیر \"code\" باید تنها متغیر موجود در قالب URL باشد"
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "رویدادهای جریان"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "در زولیپ کلود استاندارد در دسترس است. ارتقا دهید تا دسترسی داشته باشید."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "بر روی زولیپ ابری پلاس در دسترس است. ارتقا دهید تا دسترسی داشته باشید."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "ادغام GIPHY غیرفعال شد"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "گیفهای رده Y (مخاطبان خیلی جوان) مجاز هستند"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "گیفهای رده G (مخاطبان عمومی) مجاز هستند"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "گیفهای رده PG (تخت نظر والدین) مجاز هستند"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "گیفهای رده PG-13 مجاز است (زیر نظر والدین - زیر ۱۳ سال)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "گیفهای با رده R (محدودشده) مجاز باشد"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "وب-عمومی"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "عمومی"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "سابقه به اشتراک گذاشته شده، خصوصی"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "سابقه محافظت شده، خصوصی"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "عمومی،سابقه محافظت شده"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "تمام اعضای جریان میتوانند پست ارسال کنند"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "فقط ادمینهای سازمان میتوانند پست ارسال کنند"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "فقط ادمینهای سازمان و مدیران میتوانند پست ارسال کنند"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "فقط اعضای اصلی سازمان میتوانند پست ارسال کنند"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "ادمینها، مدیران، اعضا و مهمانها"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "ادمینها، مدیران و اعضا"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "ادمینها و مدیران"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "فقط ادمینها"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "هیچ کس"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "کاربر ناشناس"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "مالک سازمان"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "ادمین سازمان"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "مجری"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "عضو"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "مهمان"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "آدرس آی پی ناشناخته"
@@ -5147,20 +5704,20 @@ msgstr "یک سیستم عامل ناشناخته"
 msgid "An unknown browser"
 msgstr "یک مرورگر ناشناخته"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "آرگومان 'شناسه صف' خالی است"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "آرگومان 'شناسه آخرین رویداد' خالی است"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "یک رویداد جدیدتر از {event_id} قبلاً پاک شده است!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "رویداد {event_id} در این صف نبود"
@@ -5198,41 +5755,41 @@ msgstr "کلمه عبور غلط است"
 msgid "User-Agent header missing from request"
 msgstr "هدر User-Agent در درخواست خالی است"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "برچسب نمی تواند خالی باشد."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "فیلد باید حداقل یک انتخاب داشته باشد."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "نوع فیلد برای نمایش در خلاصه پروفایل، پشتیبانی نمیشود."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "نوع فیلد اشتباه است."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "فقط 2 فیلد سفارشی پروفایل را میتوان در خلاصه پروفایل نمایش داد."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "یک فیلد با این برجسب قبلا تعریف شده است."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "فیلد سفارشی پیش فرض نمی تواند به روز رسانی شود."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "این نقط پایانی در تولید نهایی موجود نیست"
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend فعال نشده"
 
@@ -5283,7 +5840,7 @@ msgstr "شما باید حداقل یک آدرس ایمیل مشخص کنید."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "جریانی با این شناسه وجود ندارد: {stream_id}. دعوتی ارسال نشد."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "شما اجازه اشتراک سایر کاربران در جریانها را ندارید."
 
@@ -5332,19 +5889,19 @@ msgstr "لنگر فقط در انتهای محدوده قابل حذف است"
 msgid "No such topic '{topic}'"
 msgstr "چنین موضوعی وجود ندارد '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "ارسال کننده خالی است"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "آیینه کردن برای شناسه کاربرهای دریافت کننده مجاز نیست"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "پیام آیینه شده اشتباه است"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "آیینه سازی Zephyr در این سازمان مجاز نیست"
 
@@ -5360,42 +5917,46 @@ msgstr "کاربر قبلاً بیصدا شده است"
 msgid "User is not muted"
 msgstr "کاربر بیصدا نیست"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "وضعیت حضور برای کاربران ربات پشتیبانی نمی شود."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "هیچ داده حضوری برای {user_id_or_email} وجود ندارد"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "کلاینت هیچ مقدار جدیدی وارد نکرده است."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "اگر مشتری emoji_code یا reagim_type را ارسال کند، باید emoji_name را هم ارسال کند."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "وضعیت نامعتبر: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "شناسه اپ نامعتبر"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "طول توکن نادرست است یا توکن خالی است"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "توکن APNS اشتباه است"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "خطای برگشت داده شده از بانسر: {result}"
@@ -5410,55 +5971,55 @@ msgstr "حداقل یکی از آرگومان های زیر باید باشند:
 msgid "Read receipts are disabled in this organization."
 msgstr "رسید خواندهشدن، در این سازمان غیرفعال شده است."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "زبان نامعتبر '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "حداقل یک روش احرازهویت باید فعال باشد."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "تأمینکننده تماس تصویری نامعتبر {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "giphy_rating نامعتبر {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "باید یک سازمان آزمایشی باشد."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "دامنه نامعتبر: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "دامنه {domain} در حال حاضر بخشی از سازمان شماست"
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "هیچ ورودی برای دامنه {domain} پیدا نشد."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "شما باید دقیقا یک فایل بارگذاری کنید."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "فقط ادمینها میتوانند ایموجیهای پیشنویس را تغییر بدهند."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "فایل آپلود شده بزرگتر از حد مجاز {max_size} مگابایت است "
@@ -5492,7 +6053,7 @@ msgstr "خروجی گرفتن هنوز در جریان است"
 msgid "You must upload exactly one icon."
 msgstr "شما باید دقیقا یک آیکون بارگذاری کنید."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "پیونددهنده یافت نشد."
 
@@ -5520,71 +6081,71 @@ msgstr "قالب درخواست نامعتبر"
 msgid "Invalid DSN"
 msgstr "DSN نامعتبر"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "جریانهای خصوصی نمیتوانند تبدیل به جریان پیشفرض شوند."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "شما باید یکی از پارامترهای \"توضیحات جدید\" یا \"نام گروه جدید\" را وارد کنید."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "مقدار \"op\" اشتباه است. یکی از مقادیر \"add\" یا \"remove\" را استفاده کنید."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "جریان قبلا همین نام را داشته است!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "کاری برای انجام نیست. حداقل یک مورد از \"add\" یا \"delete\" را مشخص کنید."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} شما را مشترک جریان {stream_name} کرد."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} شما را مشترک جریانهای زیر کرد:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "امکان دسترسی به جریان ({stream_name}) وجود ندارد."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "شما تنها می توانید کاربران آیینه ای Zephyr را یه جریان های خصوصی دعوت کنید."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} این جریانها را ایجاد کرد: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} یک جریان جدید ساخت {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "جریانهای جدید"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** جریان ایجاد شده توسط {user_name}. **توضیحات:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "ویژگی عضویت ناشناخته: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "مشترک جریان با شناسه {stream_id} نیست"
@@ -5593,7 +6154,7 @@ msgstr "مشترک جریان با شناسه {stream_id} نیست"
 msgid "Invalid json for submessage"
 msgstr "Json برای پیام زیرمجموعه اشتباه است"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "شما مجاز به دیدن این فایل نیستید.
"
 
@@ -5617,112 +6178,112 @@ msgstr "لیست 'گیرندگان' خالی"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "کاربر اطلاعرسانی نوشتن را برای پیامهای مستقیم، غیر فعال کرده است"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr "این فایل وجود ندارد یا پاک شده است.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "توکن نامعتبر"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "نام فایل نامعتبر"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "شما باید برای بارگذاری یک فایل مشخص کنید"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "شما هر دفعه تنها می توانید یک فایل بارگذاری کنید"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "اطلاعات جدیدی وجود ندارد"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} شما را به گروه {group_name} اضافه کرد."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} شما را از گروه {group_name} حذف کرد."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "کاربر {user_id} در حال حاضر عضو این گروه است"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "هیچ عضو '{user_id}' در این گروه کاربری نیست"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "گروه کاربری {group_id} در حال حاضر یک زیرگروه این گروه است."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "گروه کاربری {user_group_id} در حال حاضر زیرگروه یکی از زیرگروههای تصویب شده است."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "گروه کاربری {group_id} در حال حاضر یک زیرگروه این گروه نیست."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "تغییر آواتار در این سازمان غیرفعال است."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "تغییر آدرس ایمیل در این سازمان غیرفعال است."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "زبان پیشفرض نامعتبر"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "صدای اطلاع رسانی نامعتبر است '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "دوره دستهبندی ایمیل نامعتبر: {seconds} ثانیه"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "کلمه عبور زولیپ شما در LDAP مدیریت میشود"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "کلمه عبور اشتباه است!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "شما بیش از حد تلاش کردهاید! {seconds} ثانیه دیگر دوباره تلاش کنید."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "کلمه عبور جدید بسیار ضعیف است!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "شما باید دقیقا یک آواتار بارگذاری کنید."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "موضوع بی صدا نیست"
 
@@ -5783,43 +6344,43 @@ msgstr "آدرس های ایمیل قابل نمایش در این سازمان
 msgid "Email '{email}' already in use"
 msgstr "ایمیل '{email}' قبلاً استفاده شده است"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "توکن دسترسی به زوم نامعتبر"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "اعتبارسنجی زوم پیکربندی نشده است"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "معرف جلسه زوم نامعتبر"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "اعتبارسنجی زوم نامعتبر"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "ساخت تماس زوم ناموفق بود"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton پیکربندی نشده است"
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "امضا نامعتبر."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "خطا در اتصال به سرور BigBlueButton"
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "خطا در اعتبارسنحی در سرور BigBlueButton."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "سرور BigBlueButton یک خطای غیرمنتظره برگرداند."
 
@@ -5852,11 +6413,11 @@ msgstr "بار درخواست اشتباه است"
 msgid "Unknown webhook request"
 msgstr "درخواست وب هوک ناشناخته است"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "موضوع نمی تواند خالی باشد"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "محتوا نمی تواند خالی باشد"
 
@@ -5883,7 +6444,7 @@ msgstr "webhook newrelic نیاز دارد که وضعیت در یکی از حا
 msgid "Events key is missing from payload"
 msgstr "کلید رویدادها در محموله گم شده است"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "امکان مدیریت کردن بار محوری وجود ندارد"
 
@@ -5900,83 +6461,105 @@ msgstr "پیام از اسلک"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "عملیات وبهوک وردپرس ناشناخته است: {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "خروجی گرفتن از دادههای شما کامل شد. [مشاهده و دانلود خروجیها]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "زیردامنه نامعتبر برای اعلانهای فشاری"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "باید با کلید صحیح API سرور زولیپ اعتبارسنجی شود"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID نامعتبر"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "نوع توکن نامعتبر است"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} یک نام میزبان معتبر نیست"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "ios_app_id گم شده است"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "شناسه کاربری یا uuid کاربر گم شده است"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr "طرح شما اجازه ارسال اعلانهای فشاری را نمیدهد."
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "دارایی نامعتبر {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr "نوع رویداد نامعتبر است."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "داده خارج از ترتیب است."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "ثبت نام تکراری تشخیص داده شد."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
-msgstr "خطا در مهاجرت مشتری از سرور به حوزهها رخ داد. لطفاً برای کمک با پشتیبانی تماس بگیرید."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
+msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "گزارش لاگ دادهها نادرست است"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "لازم است که کلمه عبور خود را جایگزین کنید."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "پارامتر id_token گم شده"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP اشتباه است"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "نمی توان از mobile_flow_otp و desktop_flow_otp با هم استفاده کرد."
diff --git a/locale/fa/translations.json b/locale/fa/translations.json
index bc2288ec20..fe4c5a864c 100644
--- a/locale/fa/translations.json
+++ b/locale/fa/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(فایل پیوست)",
   "(forever)": "(تاهمیشه)",
   "(hidden)": "(پنهان)",
-  "(no description)": "(بدون توضیح)",
   "(no topic)": "(موضوعی وجود ندارد)",
   "(or )": "(یا )",
   "(you)": "(شما)",
   "({message_retention_days} days)": "({message_retention_days} روز)",
   "/dark (Switch to the dark theme)": "/تیره (جابجایی با تم تیره)",
   "/light (Switch to light theme)": "/روشن (جابجابی با تم روشن)",
-  "/me is excited (Display action text)": "/me هیجان زده ام (نمایش متن واکنش)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll را امروز کجا باید راه اندازی کنیم؟ (ایجاد نظرسنجی)",
-  "/todo (Create a todo list)": "/لیستکار (ایجاد یک لیست کار)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 روز",
   "1 hour": "1 ساعت",
   "1 week": "1 هفته",
@@ -28,7 +27,7 @@
   "6 hours": "6 ساعت",
   "Total messages: {total_messages}": "کل پیامها: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} از تمام پیامهایی که به اشتراکگذاشته شده باشند حذف خواهد شد. این عملیات قابل برگشت نیست.
",
-  "Stream will be announced in #{notifications_stream}.
": "جریان در #{notifications_stream} اطلاعرسانی خواهد شد.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "شما به دنبال پیامهایی میگردید که توسط بیش از یک نفر فرستاده شدهاند، که امکانپذیر نیست.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "شما به دنبال پیامهایی میگردید که به بیش از یک جریان متعلق باشند که امکان پذیر نیست.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "شما به دنبال پیامهایی میگردید که به بیش از یک موضوع متعلق باشند که امکانپذیر نیست.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "فعالیت ناشناخته",
   "Add": "افزودن",
   "Add GIF": "اضافه کردن گیف",
+  "Add a description": "",
   "Add a new alert word": "افزودن یک کلمه هشداردهنده جدید",
   "Add a new bot": "افزودن یک ربات جدید",
   "Add a new code playground": "اضافه کردن یک محیط کدنویسی",
@@ -207,6 +207,7 @@
   "Bot": "بات",
   "Bot email": "ایمیل ربات",
   "Bot email (a-z, 0-9, and dashes only)": "ایمیل ربات (تنها شامل حروف کوچک، اعداد 0-9 و خط تیره) ",
+  "Bot is deactivated": "",
   "Bot owner": "مالک ربات",
   "Bot type": "نوع ربات",
   "Bots": "رباتها",
@@ -257,7 +258,7 @@
   "Close this dialog window": "این پنجره گفت و گو را ببند",
   "Code": "کد",
   "Code playgrounds": "زمین بازی کد",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "زمینهای بازی کد، محیطهای توسعه تعاملی درون مرورگر هستند، مانند replit، که طراحی شدهاند تا اصلاح و عیبیابی کدها راحتتر باشد. بلوکهای کد زولیپ که توسط یک زبان برنامهنویسی برچسبگذاری شدهاند یک کلید قابل مشاهده دارند که اجازه میدهد بلوک کد در زمین بازی کدنویسی، باز شود.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "انصراف از نوشتن",
   "Collapse direct messages": "بستن پیامهای مستقیم",
   "Collapse message": "بستن پیام",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "روش های احرازهویت برای سازمان خود را پیکربندی کنید.",
   "Configure the default streams new users are subscribed to when joining your organization.": "جریان های پیش فرض برای عضویت کاربران جدیدی که به سازمان شما می پیوندند را پیکربندی کنید.",
   "Confirm": "تایید",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "جستجوی همه جریانهای عمومی رادر نظر بگیرید.",
   "Contact a moderator to resolve this topic.": "با یک مدیر برای حل کردن این موضوع، تماس بگیرید",
   "Contact a moderator to unresolve this topic.": "با یک مدیر برای علامتگذاری این موضوع به عنوان حل نشده، تماس بگیرید.",
@@ -292,6 +294,7 @@
   "Copy code": "کپی کردن کد",
   "Copy link": "رونوشت لینک",
   "Copy link to message": "کپی کردن لینک به پیام",
+  "Copy link to profile": "",
   "Copy link to topic": "کپی کردن لینک به موضوع",
   "Copy mention syntax": "روش اشاره کردن را کپی کن",
   "Copy version": "کپی کردن نسخه",
@@ -358,6 +361,7 @@
   "Delete all drafts": "پاک کردن تمام پیشنویسها",
   "Delete all selected drafts": "پاک کردن تمام پیشنویسهای انتخاب شده",
   "Delete code playground?": "آیا زمین بازی کد پاک شود؟",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "فیلد سفارشی پروفایل پاک شود؟",
   "Delete data export?": "خروجی دادهها پاک شود؟",
   "Delete draft": "حذف ذخیره موقت",
@@ -413,7 +417,6 @@
   "Domain": "دامنه",
   "Don’t allow disposable email addresses": "آدرس های ایمیل قابل نمایش نباشند",
   "Download": "دانلود",
-  "Download .zuliprc": "دانلود .zuliprc",
   "Download botserverrc": "دانلود botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "دانلود تنظیمات همه رباتهای فعال با وبهوک خروجی در قالب Botserver زولیپ",
   "Download file": "دانلود فایل",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "آموزش (انتفاعی)",
   "Education (non-profit)": "آموزش (غیر انتفاعی)",
   "Effect": "تأثیر",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "ایمیل",
   "Email address": "آدرس ایمیل",
   "Email address changes are disabled in this organization.": "تغییر آدرس ایمیل در این سازمان غیرفعال است.",
@@ -550,7 +554,7 @@
   "Follow": "دنبال کردن",
   "Followed": "دنبال شده",
   "Followed topics": "دنبال کردن موضوع",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "برای مثال، برای پیکربندی یک زمین بازی کد برای بلوکهای کد با برچسب پایتون، میتوانید اینطور تنظیم کنید:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "برای مثالهای بیشتر و جزییات فنی، مستندات مرکز کمکرسانی را در مورد اضافه کردن زمین بازی کد، ببینید.",
   "For more examples, see the help center documentation on adding linkifiers.": "برای مثالهای بیشتر، به مستندات مرکز کمکرسانی در مورد افزودن پیونددهندهها مراجعه کنید.",
   "Forgot it?": "فراموش کردن این مورد؟",
@@ -606,6 +610,8 @@
   "Image": "تصویر",
   "In a meeting": "در جلسه",
   "In muted streams, stream notification settings apply only to unmuted topics.": "در جریانهای بیصدا شده، تنظیمات اطلاع رسانی جریان، فقط بر روی موضوعات صدادار اثر خواهد داشت.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "غیرفعال",
   "Inactive bots": "رباتهای غیرفعال",
   "Inbox": "صندوق ورودی",
@@ -704,9 +710,11 @@
   "Manage this bot": "مدیریت این ربات",
   "Manage this user": "مدیریت این کاربر",
   "Manage user": "مدیریت کاربر",
+  "Manage your API key": "",
   "March": "مارس",
   "Mark all messages as read": "تبدیل تمام پیامها به خوانده شده",
   "Mark all messages as read?": "تبدیل تمام پیامها به خوانده شده؟",
+  "Mark all messages as unread": "",
   "Mark as read": "تبدیل به خوانده شده ",
   "Mark as resolved": "تبدیل به حل شده",
   "Mark as unread from here": "تبدیل به خواندهنشده از اینجا",
@@ -722,6 +730,7 @@
   "Mentioned in": "نامبرده شده در",
   "Mentions": "اشارهها",
   "Menus": "منوها",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "پیام #{stream_name}",
   "Message #{stream_name} > {topic_name}": "پیام #{stream_name} > {topic_name}",
   "Message actions": "اقدامات برروی پیام",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "پیام {recipient_label}",
   "Message {recipient_names}": "پیام {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "پیام {recipient_name} ({recipient_status})",
+  "Messages": "پبام ها",
   "Messages in all public streams": "پیامها در تمام جریانهای عمومی",
   "Messages sent by you": "پیامهای ارسال شده توسط شما",
   "Messages sent by {sender}": "پیامهای ارسال شده توسط {sender}",
@@ -805,6 +815,7 @@
   "Never expires": "هرگز منقضی نشود",
   "New": "جدید",
   "New direct message": "پیام مستقیم جدید",
+  "New direct message from {sender_full_name}": "",
   "New email": "ایمیل جدید",
   "New message": "پیام جدید",
   "New option": "گزینه جدید",
@@ -821,25 +832,20 @@
   "Next unread direct message": "پیام مستقیم خوانده نشده بعدی",
   "Next unread followed topic": "پیام خواندهنشده بعدی از موضوعات دنبالشده",
   "Next unread topic": "موضوع خوانده نشده بعدی",
-  "No bots found.": "رباتی پیدا نشد.",
+  "No active users.": "",
   "No bots match your current filter.": "هیچ رباتی با فیلتر شما یافت نشد.",
   "No conversations match your filters.": "هیچ مکالمهای با فیلترهای شما منطبق نیست.",
-  "No custom emojis found.": "هیچ ایموجی سفارشی پیدا نشد.",
   "No custom emojis match your current filter.": "هیچ ایموجی سفارشی با فیلتر جاری شما منطبق نیست.",
   "No custom profile field configured for this organization.": "برای این سازمان هیچ فیلد سفارشی پروفایل، پیکربندی نشده است.",
-  "No deactivated users found.": "هیچ کاربر غیرفعال پیدا نشد.",
-  "No default streams found.": "هیچ جریان پیشفرض پیدا نشد.",
   "No default streams match your current filter.": "هیچ جریان پیشفرضی با فیلتر جاری شما منطبق نیست.",
   "No description.": "بدون توضیح",
   "No drafts selected": "هیچ پیشنویسی انتخاب نشده است",
   "No drafts.": "بدون پیش نویس",
-  "No exports found.": "هیچ خروجی پیدا نشد.",
   "No group members match your current filter.": "هیچ عضو گروه با فلیتر فعلی شما منطبق نبود.",
-  "No invites found.": "دعوتنامهای پیدا نشد.",
   "No invites match your current filter.": "هیچ دعوتی با فیلتر شما یافت نشد.",
   "No language set": "هیچ زبانی تعیین نشده",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "هیچ پیونددهنده با فیلتر فعلی شما منطبق نیست.",
-  "No linkifiers set.": "پیونددهندهای تنظیم نشده است.",
   "No matching results": "نتیجه منطبق وجود ندارد",
   "No matching streams": "جریان منطبقی پیدا نشد",
   "No matching users.": "هیچ کاربر منطبقی وجود ندارد.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "هیچ موضوع حلشدهای نیست.",
   "No topics match your current filter.": "هیچ موضوعی با فیلتر فعلی شما منطبق نیست.",
   "No uploaded files match your current filter.": "هیچ فایل آپلود شدهای با فیلتر جاری شما منطبق نیست.",
+  "No user found": "",
   "No user group subscriptions.": "بدون هیچ اشتراک گروه کاربری.",
   "No user groups": "هیچ گروه کاربری وجود ندارد",
   "No user to subscribe.": "کاربرب برای مشترک شدن نیست.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "هیچکس در این سازمان زولیپ نمیتواند این آدرس ایمیل را ببیند.",
   "Non-profit (registered)": "غیرانتفاعی (ثبت شده)",
   "None": "هیچکدام",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "توجه کنید هر رباتی که نگهداری می کنید غیرفعال خواهد شد.",
   "Note that organizations are limited to five exports per week.": "توجه داشته باشید که در هر سازمان حداکثر پنج خروجی در هفته می توانید بگیرید ",
   "Nothing to preview": "موردی برای پیش نمایش نیست",
@@ -932,6 +940,7 @@
   "Other permissions": "سایر مجوزها",
   "Other settings": "سایر تنظیمات",
   "Other users in this Zulip organization will be able to see this email address.": "سایر کاربران در این سازمان زولیپ میتوانند این آدرس ایمیل را ببینند.",
+  "Others": "",
   "Out sick": "بیمار ",
   "Outgoing webhook message format": "قالب پیام وب هوک خروجی",
   "Override default emoji?": "ایموجی پیشفرض بازنویسی شود؟",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "به دست آوردن موضوع در پیام های جریانی",
   "Research": "پژوهش",
   "Resend": "ارسال مجدد",
-  "Resend invitation": "ارسال دوباره دعوتنامه",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "ارسال مجدد با خطا مواجه شد. لطفا مجدد بارگذاری کرده و تلاش کنید.",
+  "Reset to default notifications": "",
   "Reset zoom": "بازنشانی زوم",
   "Restore draft": "بازیابی پیش نویس",
   "Restrict email domains of new users?": "دامنه ایمیل کاربران جدید محدود شود؟",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "جستجو برای  در موضوع یا محتوای پیام.",
   "Search people": "جستجوی افراد",
   "Search results": "نتايج جستجو",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "ببینید چگونه ایمیل را پیکربندی کنید.",
   "Select a stream": "انتخاب یک جریان",
   "Select a stream below or change topic name.": "یکی از جریانهای زیر را انتخاب کنید یا نام موضوع را عوض کنید.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "نمایش تعداد پیام های ستاره دار",
   "Show status text": "نمایش متن وضعیت",
   "Show unread counts for": "نمایش تعداد خوانده نشده برای",
-  "Show/change your API key": "نمایش/تغییر کلید API شما",
   "Showing messages since {time_string}.": "نشاندادن پیامها از {time_string}.",
   "Sign up": "ثبت نام",
   "Silent mentions do not trigger notifications.": "اشارههای بیصدا، اطلاعرسانی را فعال نمیکنند.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "آدرس ایمیل فرستنده",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "جریان #{stream_name} وجود ندارد. در صفحه جریانهای خود، اشتراکهای خود را مدیریت کنید.",
   "The stream description cannot contain newline characters.": "توضیحات جریان نمی تواند حاوی کاراکتر خط جدید باشد. ",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "کلمه های عبورشان از سامانه های ما پاک می شود و هر رباتی که نگهداری می کنند غیرفعال خواهد شد.",
   "Theme": "زمینه",
+  "There are no bots.": "",
   "There are no current alert words.": "در حال حاضر هیچ کلمه اخطار وجود ندارد.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "اینجا هیچ پیامی نیست.",
   "There are no streams you can view in this organization.": "هیچ جریانی در این سازمان نیست که شما بتوانید مشاهده کنید.",
   "There are no unread messages in your inbox.": "در صندوق ورودی شما هیچ پیام خواندهنشدهای وجود ندارد.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "این ربات نمیتواند غیرفعال شود.",
   "This bot cannot be edited.": "این ربات نمیتواند ویرایش شود.",
   "This bot has been deactivated.": "این ربات غیرفعال شده است.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "این مکالمه ممکن است پیامهای بیشتری داشته باشد که در اینجا نمایش داده نشود.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "این سازمان آزمایشی به صورت خودکار بعد از  {days_remaining} روز حذف خواهد شد مگر آنکه به یک سازمان دائمی تبدیل شود.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "این ویژگی بر روی زولیپ ابری پلاس در دسترس است. ارتقا دهید تا دسترسی داشته باشید.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "این کار فیلد پروفایل  را برای  کاربر پاک خواهد کرد.",
   "This will delete the  profile field for 1 user.": "این کار فیلد پروفایل  را برای 1 کاربر حذف خواهد کرد.",
   "This will delete the  profile field for  users.": "این کار فیلد پروفایل  را برای  کاربر حذف خواهد کرد.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "پنجشنبه",
   "Time": "زمان ",
   "Time format": "قالب زمان",
@@ -1240,6 +1259,7 @@
   "Today": "امروز",
   "Today at {time}": "امروز ساعت {time}",
   "Toggle first emoji reaction on selected message": "اولین واکنش ایموجی را بر روی پیام انتخاب شده، تغییر دهید",
+  "Toggle preview mode": "",
   "Toggle subscription": "ایجاد/حذف عضویت",
   "Toggle the gear menu": "تغییر وضعیت منوی چرخ دندهای",
   "Toggle topic mute": "بیصدا کردن موضوع",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "شما در این سازمان اجازه ندارید سایر کاربران را به یک جریان اضافه کنید.",
   "You do not have permission to join this group.": "شما اجازه ندارید به این گروه ملحق شوید.",
   "You do not have permission to leave this group.": "شما اجازه ندارید از این گروه خارج شوید.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "شما مجاز نیستید برخی از پیامهای موجود در این موضوع را جابجا کنید. برای جابجا کردن همه پیامها، با یک مدیر تماس بگیرید.",
   "You do not have permission to post in this stream.": "شما اجازه ندارید در این جریان پست ارسال کنید.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "شما در این سازمان اجازه ندارید که موضوعاتی را که پیامهای قدیمیتر از {N, plural, one {# day} other {# days}} دارند، حلشده علامتگذاری کنید.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "زولیپ سرور {display_version}",
   "Zulip Server {display_version} (modified)": "سرور زولیپ {display_version} (اصلاح شده)",
   "Zulip Server {display_version} (patched)": "سرور زولیپ {display_version} (وصله شده)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "زولیپ به شما اجازه میدهد که اعلانها را برای هر موضوع، پیکربندی کنید. همچنین میتوانید به صورت خودکار موضوعاتی را که شما شروع کردهاید یا در آن شرکت کردهاید، دنبال کنید یا صدادار کنید.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "زولیپ به شما اجازه می دهد که موضوعات و جریانها را بیصدا کنید تا از دریافت اطلاعرسانیهایی که به آنها علاقهای ندارید جلوگیری شود. بیصدا کردن یک جریان، تمام موضوعات موجود در آن جریان را نیز بیصدا میکند. شما میتوانید به صورت دستی موضوعی را درون یک جریان صدادار، بیصدا کنید با به صورت برعکس در یک جریان بیصدا یک موضوع صدادار داشته باشید. بیشتر یادبگیرید.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "زولیپ برای تایید آدرس کاربران و ارسال اطلاع رسانی نیاز به ارسال ایمیل دارد. ",
   "Zulip needs your permission to enable desktop notifications.": "زولیپ اجازه شما را برای فعال کردن اعلانهای دسکتاپ نیاز دارد.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "ترجمه های زولیپ توسط جامعه فوقالعاده مترجمان داوطلب ما ارائه شده است. اگر میخواهید کمک کنید، دستورالعملهای ترجمه زولیپ را ببینید.",
@@ -1541,6 +1561,9 @@
   "more topics": "موضوعات بیشتر",
   "she/her": "she/her",
   "they/them": "they/them",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {انجام شد! {N} پیام به خواندهشده تبدیل شد.} other {انجام شد! {N} پیام به خواندهشده تبدیل شدند.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {انجام شد! {N} پیام به خواندهنشده تبدیل شد.} other {انجام شد! {N} پیام به خواندهنشده تبدیل شدند.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {کاربران با موفقیت دعوت شدند.} other {کاربر با موفقیت دعوت شد.}}",
diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po
index 6a23a2c7db..8924e75553 100644
--- a/locale/fi/LC_MESSAGES/django.po
+++ b/locale/fi/LC_MESSAGES/django.po
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Flammie , 2020,2022\n"
 "Language-Team: Finnish (http://app.transifex.com/zulip/zulip/language/fi/)\n"
@@ -26,57 +26,51 @@ msgstr ""
 "Language: fi\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Ei sallittu vieraille"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Virheellinen organisaatio"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Julkiset kanavat"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Yksityiset kanavat"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Suoraviestit"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Aloitusaika on myöhemmin kuin lopetusaika. Aloitus:{start}, Lopetus: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Analytiikan tietoja ei ole saatavilla. Ota yhteyttä palvelimesi järjestelmänvalvojaan."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Virheelliset parametrit"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -85,7 +79,7 @@ msgid ""
 "users to join."
 msgstr "Organisaatiollasi ei ole enää Zulip-lisenssejä, eikä se voi enää ottaa vastaan uusia käyttäjiä. [Lisää lisenssien määrää]({billing_page_link}) tai [poista käytöstä passiiviset käyttäjät]({deactivate_user_help_page_link}), jotta uudet käyttäjät voivat liittyä. "
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -94,7 +88,7 @@ msgid ""
 "join."
 msgstr "Organisaatiollasi on vain yksi Zulip-lisenssiä jäljellä. Voit [lisätä lisenssien määrää]({billing_page_link}) tai [poistaa käytöstä ei-aktiiviset käyttäjät]({deactivate_user_help_page_link}) mahdollistaaksesi useamman kuin yhden käyttäjän liittymisen. "
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -103,7 +97,7 @@ msgid ""
 "join."
 msgstr "Organisaatiollasi on vain kaksi Zulip-lisenssiä jäljellä. Voit [lisätä lisenssien määrää]({billing_page_link}) tai [poistaa käytöstä ei-aktiiviset käyttäjät]({deactivate_user_help_page_link}) mahdollistaaksesi useamman kuin kahden käyttäjän liittymisen."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -112,7 +106,7 @@ msgid ""
 "join."
 msgstr "Organisaatiollasi on vain kolme Zulip-lisenssiä jäljellä. Voit [lisätä lisenssien määrää]({billing_page_link}) tai [poistaa käytöstä ei-aktiiviset käyttäjät]({deactivate_user_help_page_link}) mahdollistaaksesi useamman kuin kolmen käyttäjän liittymisen. "
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -121,11 +115,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Uusi jäsen ({email}) ei voinut liittyä organisaatioosi, koska kaikki Zulip-lisenssit ovat käytössä. [Lisää lisenssien määrää]({billing_page_link}) tai [poista käytöstä passiiviset käyttäjät]({deactivate_user_help_page_link}), jotta uudet jäsenet voivat liittyä. "
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Kaikki tämän organisaation Zulip-lisenssit ovat tällä hetkellä käytössä. "
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -141,124 +135,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} päättyy {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Tuntematon maksutapa. Ota yhteyttä {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Jotain meni pieleen. Lähetä meille sähköpostia osoitteeseen {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Jotain meni pieleen. Lataa sivu uudestaan."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Jotain meni pieleen. Odota hetki ja lataa sivu uudestaan."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Tilausta ei voi päivittää. Tilaus on vanhentunut ja korvattu uudella. "
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Tilauksen päivitys epäonnistui. Tilaus on päättäynyt."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Lisenssien manuaalinen päivitys epäonnistui. Tilauksesi on asetettu automaattiseen lisenssienhallintaan."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Tilauksesi löytyy jo lisensseistä {licenses} nykyiseltä laskutusjaksolta."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Et voi vähentää lisenssejä nykyiseltä laskutusjaksolta."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "TIlauksesi uudistaminen on jo ajastettu seuraavien lisenssien osalta {licenses_at_next_renewal}."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Ei mitään muutettavaa."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Tälle organisaatiolle ei ole asiakasta!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Istuntoa ei löytynyt"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "On oltava laskutuksen järjestelmänvalvoja tai organisaation omistaja"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Maksutarkoitusta ei löytynyt"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Anna stripe_session_id tai stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -266,54 +260,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Virheelliset parametrit"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Virhe"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Menetelmä ei sallittu (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Sivua ei löytynyt (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -322,8 +323,41 @@ msgid ""
 "                        "
 msgstr "\nJos tämä virhe tuli odottamatta voit\n ottaa yhteyttä tukeen."
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Menetelmä ei sallittu (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Palvelimen sisäinen virhe"
 
@@ -428,7 +462,7 @@ msgstr "15 päivän aikana aktiiviset"
 msgid "Total users"
 msgstr "Käyttäjiä yhteensä"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Käyttäjät"
 
@@ -568,38 +602,134 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Varmista, että kopioit linkin oikein selaimeesi. Jos näet tämän sivun uudelleen, kyseessä lienee meidän virheemme. Olemme pahoillamme!"
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Laskutus"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Sulje näkymä"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Peruuta"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Vahvista"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
 msgstr ""
 
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Laskutusstatus"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Käyttötiheysraja ylitetty"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Raja-arvo ylitetty."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Voit yrittää uudelleen %(retry_after)s sekunnin kuluttua."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Päivitys"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Muunna demo-organisaatio ennen päivitystä."
+
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
 msgstr "Avaa yhteisöhakemisto"
@@ -619,6 +749,451 @@ msgstr "Kategoriat"
 msgid "All"
 msgstr "Kaikki"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Zulip kehitysyhteisö"
@@ -638,11 +1213,7 @@ msgstr "Liity itseisännöijäksi"
 msgid "Join as a contributor"
 msgstr "Liity osallistujaksi"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Laskutusstatus"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -657,12 +1228,12 @@ msgstr "Laskutusstatus"
 msgid "Create organization"
 msgstr "Luo organisaatio"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -695,51 +1266,48 @@ msgstr "Koulutuksen hinnoittelu"
 msgid "View pricing"
 msgstr "Katso hinnoittelu"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip yrityksille"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Ota yhteyttä tukeen"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Lähettäjä"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisaatio"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Aihe"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Viesti"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Lähetä"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Kiitos viestistäsi"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Kiitos yhteydenotosta."
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Ollaan yhteyksissä pian."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -755,14 +1323,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Päivitys"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Muunna demo-organisaatio ennen päivitystä."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -810,7 +1370,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Rekisteröidy"
 
@@ -843,8 +1403,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Kirjaudu"
 
@@ -877,26 +1437,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Yhteyden muodostamineen Zulipiin epäonnistui."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Päivitykset voivat viivästyä."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Yritetään pian uudelleen…"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Yritä nyt."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Viestit"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Vahvennusalidomainvirhe."
@@ -1119,21 +1675,21 @@ msgstr "Vieraskäyttäjät"
 msgid "Normal users"
 msgstr "Normaalit käyttäjät"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Sulje"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Päivitä"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2356,7 +2912,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2376,7 +2932,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2386,12 +2951,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Sähköpostiosoite"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Etsi tilejä"
 
@@ -2423,7 +2988,7 @@ msgstr "Integraatiot"
 msgid "Desktop & mobile apps"
 msgstr "Työpöytä- ja mobiilisovellukset"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Uusi organisaatio"
 
@@ -2791,13 +3356,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Käyttötiheysraja ylitetty"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Raja-arvo ylitetty."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2805,11 +3366,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Olet ylittänyt rajan kuinka\nusein käyttäjä voi suorittaa tämän toiminnon. "
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Voit yrittää uudelleen %(retry_after)s sekunnin kuluttua."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2978,6 +3534,22 @@ msgstr "Mistä olet kiinnostunut?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Tilaa minulle Zulipin vähäliikenteinen uutiskirje (muutama sähköposti vuodessa). "
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Aseta uusi salasanasi"
@@ -3135,123 +3707,107 @@ msgid ""
 "                        "
 msgstr "\nVoit myös käyttää Zulipin työpöytäsovellusta."
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "ilmoittautumiset"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} liittyi juuri Zulipiin. (yhteensä: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} hyväksyi kutsusi liittyä Zulipiin!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Virheellinen order mapping."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Kenttä id {id} ei löydy."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' on oletuskanava ja sitä ei voi lisätä '{group_name}' ryhmään"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Oletuskanavan ryhmä '{group_name}' on jo olemassa"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Kanava '{stream_name}' on jo oletuskanavan ryhmässä '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "'{stream_name}' kanava ei ole oletuskanavan ryhmässä '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Käyttäjien suojaamiseksi Zulip rajoittaa yhdessä päivässä lähetettävien kutsujen määrää. Koska olet saavuttanut rajan, kutsuja ei lähetetty. "
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Tilisi on liian uusi jotta voisit lähettää kutsuja tähän organisaatioon. Kysy organisaation järjestelmänvalvojalta tai kokeneemmalta käyttäjältä."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Joitain sähköposteja ei saatu vahvistettua, joten yhtään kutsua ei lähetetty."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Emme kyenneet kutsumaan ketään."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3281,72 +3837,72 @@ msgstr "Ei voida muokata viestisisältöä samalla kun muutetaan kanavaa"
 msgid "Widgets cannot be edited."
 msgstr "Widgettiä ei voi editoida."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Organisaatiosi on ottanut viestien muokkauksen pois päältä"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Sinulla ei ole oikeuksia muokata tätä viestiä"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Tämän viestin muokkaamisen aikaraja on ohitettu"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} on merkinnyt tämän aiheen ratkaistuksi."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} on merkinnyt tämän aiheen ratkaisemattomaksi."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Tämä aihe on siirretty paikkaan {new_location} käyttäjän {user} toimesta."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Viesti tästä aiheesta on siirretty paikkaan {new_location} käyttäjän {user} toimesta."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} viestiä tästä aiheesta on siirretty paikkaan {new_location} käyttäjän {user} toimesta."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Tämä aihe on siirretty paikasta {old_location} käyttäjän {user} toimesta."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} viestiä on siirretty tänne paikasta {old_location} käyttäjän {user} toimesta."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Organisaatiosi on ottanut viestien muokkauksen pois päältä"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Sinulla ei ole oikeuksia muokata tätä viestiä"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Tämän viestin muokkaamisen aikaraja on ohitettu"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Sinulla ei ole oikeuksia siirtää tätä viestiä"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3365,137 +3921,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Virheellinen viesti(t)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Viestiä ei kyetä esittämään"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Odotettiin täsmälleen yhtä kanavaa"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Virheellinen tietotyyppi kanavalle"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Virheellinen tieto vastaanottajille"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Vastaanottajalista voi sisältää sähköpostiosoitteita tai käyttäjätunnuksia, mutta ei molempia."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Bottisi {bot_identity} yritti lähettää viestiä kanvatunnukselle {stream_id}, mutta kanavaa ei ole olemassa."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Bottisi {bot_identity} yritti lähettää viestiä kanavalle {stream_name}, mutta tätä kanavaa ei ole olemassa. Luo se napsauttamalla [tästä]({new_stream_link})."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Bottisi {bot_identity} yritti lähettää viestiä kanavalle {stream_name}. Kanava on olemassa mutta sillä ei ole yhtään tilaajaa."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Suoraviestit on poistettu käytöstä tässä organisaatiossa"
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Aiheet ovat pakollisia tässä organisaatiossa"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgetit: API-ohjelmoija lähetti virheellisen JSON-sisällön"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgetit: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Samanniminen mukautettu emoji on jo olemassa."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} muutti tämän kanavan [käyttöoikeudet](/help/stream-permissions) arvosta **{old_policy}** arvoon **{new_policy}**. "
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3504,38 +4065,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} muutti tämän kanavan [lähetysoikeudet](/help/stream-sending-policy):\n\n* **Vanhat käyttöoikeudet**: {old_policy}. \n* **Uudet käyttöoikeudet**: {new_policy}. \n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "Käyttäjä: {user_name} muutti kanavan: {old_stream_name} nimeksi: {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Ei kuvausta."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} muutti tämän kanavan kuvausta."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Vanha kuvaus"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Uusi kuvaus"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Ikuisesti"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Tämän kanavan viestit säilytetään nyt ikuisesti."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3549,7 +4110,7 @@ msgstr "{user} on muuttanut tämän kanavan [viestin säilytysjaksoa](/help/mess
 msgid "You cannot attach a submessage to this message."
 msgstr "Et voi liittää tähän viestiin alaviestiä."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3559,187 +4120,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Tämä API ei ole käytettävissä sisään tuleville webhook-boteille."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Tiliä ei ole liitetty aliverkkotunnukseen"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Tämä päätepiste ei hyväksy bottipyyntöjä."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "On oltava järjestelmänvalvoja"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Riittämättömät oikeudet"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Tämä päätepiste vaatii HTTP basic authenticationin."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Virheellinen valtuutusotsikko basic auth:lle"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Puuttuva Basic-valtuutusotsikko"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook-botit voivat päästä vain webhookeihin"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Tilisi {username} on poistettu käytöstä. Ota yhteyttä organisaatiosi järjestelmänvalvojaan aktivoidaksesi tilisi uudelleen. "
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Salasana on liian heikko."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Aliverkkotunnuksen pitää olla pituudeltaan 3 tai suurempi."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Aliverkkotunnus ei voi alkaa taikka loppua '-' merkkiin."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Aliverkkotunnus voi sisältää vain pieniä kirjaimia, numeroita, ja '-' merkkejä."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Käytä oikeaa sähköpostiosoitettasi."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Organisaatio johon yrität liittyä käyttäen {email} osoitetta ei ole olemassa."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Pyydä organisaation järjestelmänvalvojalta kutsu {email} osoitteelle. "
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Sähköpostiosoitteesi {email} ei ole verkkotunnuksesta joista on sallittu rekisteröityminen tähän organisaatioon."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Sähköpostiosoitteessa ei saa olla + -merkkiä tässä organisaatiossa."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Uudet jäsenet eivät voi liittyä tähän organisaatioon, koska kaikki Zulip-lisenssit ovat käytössä. Ota yhteyttä kutsujaan ja pyydä häntä lisäämään lisenssien määrää ja yritä sitten uudelleen. "
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Uusi salasana"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Uuden salasanan vahvistaminen"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Salasanasi on poistettu käytöstä, koska se on liian heikko. Nollaa salasanasi luodaksesi uusi. "
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Valtuus"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Lisää korkeintaan 10 sähköpostia."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Zulip-organisaatiota ei löytynyt. "
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Puuttuva aihe"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Ei voi lähettää useampaan kanavaan"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Puuttuva kanava"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Viestillä täytyy olla vastaanottajia"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Virheellinen viestityyppi"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Virheellinen liite"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Virhe tapahtui liitettä poistettaessa. Yritä myöhemmin uudelleen."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Viestillä tulee olla vastaanottajiat!"
 
@@ -3796,88 +4357,88 @@ msgstr "Käyttäjä on poistanut käytöstä luonnosten synkronoinnin."
 msgid "Draft does not exist"
 msgstr "Luonnosta ei löydy"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Avaa Zulip nähdäksesi spoilerin sisällön"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Virheellinen osoite."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Verkkotunnuksesi ulkopuolella."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Sähköpostiosoitteessa ei saa olla + -merkkiä."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Varattu järjestelmän boteille."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email}:lla on jo tili"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Omistaa jo tilin."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Tämä tili on poistettu käytöstä."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Virheellinen mukautettu emoji."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Virheellinen mukautetun emojin nimi."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Tämä mukautettu emoji on poistettu käytöstä."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Virheellinen emojin koodi."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Virheellinen emojin nimi."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Virheellinen emojin tyyppi."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "On oltava organisaation järjestelmänvalvoja tai emojin tekijä"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Emojin nimi puuttuu"
 
@@ -3885,119 +4446,119 @@ msgstr "Emojin nimi puuttuu"
 msgid "Could not allocate event queue"
 msgstr "Tapahtumajonoa ei pystytty allokoimaan"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Ei kirjautuneena: API-todennus tai käyttäjäistunto vaditaan"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "'{stream}' kanava ei ole olemassa"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Kanavaa tunnuksella '{stream_id}' ei ole olemassa"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "Organisaation omistaja"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "käyttäjä"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Ei voida poistaa käytöstä viimeistä {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Virheellinen Markdown include-lause: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "APIn käyttö ylitti raja-arvon"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Virheellisesti muotoiltu JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "On oltava organisaation jäsen"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "On oltava organisaation järjestelmänvalvoja"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "On oltava organisaation omistaja"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Käyttäjätunnuksesi tai salasanasi on väärin"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Tili on poistettu käytöstä"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Tämä organisaatio on poistettu käytöstä"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Palvelimesi mobiili push-ilmoituspalvelun rekisteröinti on poistettu käytöstä "
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Salasanatodennus on poistettu käytöstä tässä organisaatiossa"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Salasanasi on poistettu käytöstä ja tulee asettaa uudelleen"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Virheellinen API-avain"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Virheellisesti muodostettu API avain."
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Pyyntöä ei voi jäsentää: loiko {webhook_name} tämän tapahtuman? "
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Virheellinen aliverkkotunnus"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Pääsy estetty"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4005,47 +4566,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reaktio on jo olemassa."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reaktiota ei ole olemassa."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitterkäyttäjänimi"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "Githubkäyttäjänimi"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Muokatun ulkoisen tilin on määritettävä URL-osoitemalli"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Virheellinen ulkoinen tilityyppi"
 
@@ -4143,106 +4704,106 @@ msgstr "Tuottavuus"
 msgid "Version control"
 msgstr "Versionhallinta"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Viesti ei saa olla tyhjä"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Viesti ei saa sisältää tyhjiä tavuja"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Virheellinen hakuehto: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Puuttuva 'anchor' argumentti."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Virheellinen linkki"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Jos olet uusi Zulip-käyttäjä, tutustu [aloitusoppaaseemme]({getting_started_url})! "
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Tervetuloa Zulipiin!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Voin myös auttaa asennuksessa! Napsauta mitä tahansa tämän viestin kohtaa tai paina r vastataksesi. "
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Tässä on muutamia viestejä, jotka ymmärrän:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Siirry kohtaan [Profiiliasetukset](#settings/profile), lisää [profiilikuva](/help/change-your-profile-picture) ja muokkaa [profiilitietojasi](/help/edit-your-file). "
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4251,119 +4812,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "Zulipissa kanavat [määrittävät kuka saa viestin](/help/streams-and-topics)."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Selaa ja tilaa kanavia](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "Zulipissa aiheet [kertovat mistä viestissä on kyse](/help/streams-and-topics). Ne ovat kuten sähköpostin aiherivi."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Zulipin [pikanäppäimet](#keyboard-shortcuts) mahdollistavat sovelluksen nopean ja tehokkaan navigoinnin. "
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Paina `?` milloin tahansa nähdäksesi [lunttilapun](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip käyttää [Markdown](/help/format-your-message-using-markdown), intuitiivista muotoa **lihavoitukselle**, *kursivoitukselle*, luettelomerkityille luetteloille ja muille. Napsauta [tätä](#message-formatting) saadaksesi lunttilapun. "
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Tutustu [viestivinkkeihimme] (/help/messaging-tips) saadaksesi lisätietoja emojireaktioista, koodilohkoista ja paljon muusta! "
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Tutustu [aloitusoppaaseemme](/help/getting-started-with-zulip) tai selaa [Tukikeskusta](/help/) saadaksesi lisätietoja! "
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Anteeksi, en ymmärtänyt viestiäsi. Kokeile jotakin seuraavista komennoista: "
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Tämä on yksityinen kanava, kuten streamin nimen vieressä oleva lukkokuvake osoittaa. "
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Yksityiset kanavat ovat näkyvissä vain kanavan jäsenille."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Hallitaksesi kanavaa, siirry [Kanavan asetukset]({stream_settings_url}) ja napsauttamalla `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Tämä on viesti kanavalla #**{default_notification_stream_name}** aiheella `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Aiheet ovat kevyt työkalu keskustelujen pitämiseen järjestyksessä. "
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Voit lukea lisää aiheista paikasta [Kanavat ja aiheet]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Tämä on viesti kanavalla #**{default_notification_stream_name}** aiheenaan `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Virheellinen JSON vastauksessa"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Virheellinen vastaussanoman muoto"
 
@@ -4377,45 +4938,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token ei ole olemassa"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Tämä organisaatio on poistanut mahdollisuuden viestisisällön sisällyttämisestä mobiili push-ilmoituksiin "
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} maintisi @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} mainitsi sinut:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} mainitisi kaikki:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4427,23 +4988,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Käyttäjällä ei ole valtuutusta tähän kyselyyn"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' ei enää käytä Zulipia."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4463,21 +5024,21 @@ msgstr "Puuttuva '{var_name}' argumentti"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Sopimaton arvo '{bad_value}' muuttujalle: {var_name}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Virheellisen muotoinen tietosisältö"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4514,7 +5075,7 @@ msgstr "Valitse yksi: 'stream' tai 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Viallinen kanava-ID"
 
@@ -4528,7 +5089,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4537,7 +5098,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Web-julkiset kanavat eivät ole käytössä."
 
@@ -4569,28 +5130,28 @@ msgstr "Aihe ei voi olla tyhjä!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Tilaajatietoja ei ole saatavilla tälle kanavalle"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Yksityisen kanavan tilaajien haku epäonnistui"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} ei ole totuusarvo"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} ei ole päivämäärä"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} ei ole sanakirja"
@@ -4601,18 +5162,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} ei ole liukuluku"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} on liian lyhyt"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} ei ole kokonaisluku"
@@ -4622,24 +5183,24 @@ msgstr "{var_name} ei ole kokonaisluku"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} on liian pitkä"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} ei ole lista-tyyppinen"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Virheellinen {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} on liian pitkä (rajoitus: {max_length} merkkiä)"
@@ -4649,8 +5210,8 @@ msgstr "{var_name} on liian pitkä (rajoitus: {max_length} merkkiä)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} ei ole merkkijono"
@@ -4669,21 +5230,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Lähetys ylittäisi organisaatiosi lähetyskiintiön."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Kuvaa ei pystytty purkamaan; latasitko kuvatiedoston?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Kuvan koko ylittää rajan."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Vioittunut animoitu kuva."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Tuntematon aminoidun kuvan muoto."
 
@@ -4740,161 +5301,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nimi on liian pitkä!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nimi on liian lyhyt!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Virheellinen merkki nimessä!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Virheellinen muoto!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Nimi on jo käytössä!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Sopimaton nimi tai käyttäjätunnus"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Virheellinen konfiguraatiotieto!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Virheellinen bottityyppi"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Virheellinen käyttöliittymätyyppi"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Ei kyseistä bottia"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Ei kyseistä käyttäjää"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Käyttäjä on poistettu käytöstä"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} ei voi olla tyhjä."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} on liian vähän merkkejä {length}; pitäisi olla {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} ei ole aikavyöhyke"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} ei ole oikeanmuotoinen hexa-värikoodi"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} pitäisi sisältää tarkalleen {length} alkiota"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} ei sisällä {var_name} avainta"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} ei ole allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} on väärin)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} ei ole URL-osoite"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "URL-kuvion pitää sisältää %(username)s"
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' ei voi olla tyhjä."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Kentällä ei voi olla samaa valintaa monesti."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' ei ole kelvollinen vaihtoehto kentälle '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} ei ole merkkijono tai kokonaislukulista"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} ei ole merkkijono tai kokonaisluku"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} ei ole pituutta"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} puuttuu"
@@ -4928,215 +5489,211 @@ msgstr "CSRF virhe: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "kanavan tapahtumia"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Saatavilla Zulip Standardilla. Päivitä käyttääksesi."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Virheellinen merkki emojin nimessä"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Tuntematon säännöllisen lauseen virhe"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Pygments-kielessä on virheellisiä merkkejä "
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Järjestelmänvalvojat, moderaattorit ja vieraat"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Järjestelmänvalvojat, moderaattorit ja jäsenet"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Järjestelmänvalvojat ja moderaattorit"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Vain järjestelmänvalvojat"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Ei kukaan"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Organisaation omistaja"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Organisaation järjestelmänvalvoja"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderaattori"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Jäsen"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Vieras"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Julkinen verkko"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Julkinen"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Yksityinen, jaettu historia"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Yksityinen, suojattu historia"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Julkinen, suojattu historia"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Kaikki jäsenet voivat lähettää viestejä"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Ainoastaan organisaation järjestelmänvalvojat voivat lähetää viestejä"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Vain organisaation järjestelmänvalvojat ja moderaattorit voivat lähettää viestejä"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Vain organisaation täysivaltaiset jäsenet voivat lähettää viestejä"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode-emoji"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Mukautetut emojit"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulipin ekstraemoji"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Lista vaihtoehdoista"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Henkilövalitsin"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Lyhyt teksti"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Pitkä teksti"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Päivämäärän valitsin"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Linkki"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Ulkoinen tili"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronominit"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Tuntematon säännöllisen lauseen virhe"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode-emoji"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Mukautetut emojit"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulipin ekstraemoji"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Virheellinen merkki emojin nimessä"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Pygments-kielessä on virheellisiä merkkejä "
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "kanavan tapahtumia"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Saatavilla Zulip Standardilla. Päivitä käyttääksesi."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Julkinen verkko"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Julkinen"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Yksityinen, jaettu historia"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Yksityinen, suojattu historia"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Julkinen, suojattu historia"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Kaikki jäsenet voivat lähettää viestejä"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Ainoastaan organisaation järjestelmänvalvojat voivat lähetää viestejä"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Vain organisaation järjestelmänvalvojat ja moderaattorit voivat lähettää viestejä"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Vain organisaation täysivaltaiset jäsenet voivat lähettää viestejä"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Järjestelmänvalvojat, moderaattorit ja vieraat"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Järjestelmänvalvojat, moderaattorit ja jäsenet"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Järjestelmänvalvojat ja moderaattorit"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Vain järjestelmänvalvojat"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Ei kukaan"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Organisaation omistaja"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Organisaation järjestelmänvalvoja"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderaattori"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Jäsen"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Vieras"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Tuntematon IP osoite"
@@ -5149,20 +5706,20 @@ msgstr "tuntematon käyttöjärjestelmä"
 msgid "An unknown browser"
 msgstr "Tuntematon selain"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Puuttuva 'queue_id' argumentti"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Puuttuva 'last_event_id' argumentti"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "{event_id} uudempi tapahtuma on jo leikattu!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Tapahtuma {event_id} ei ollut tässä jonossa"
@@ -5200,41 +5757,41 @@ msgstr "Salasana on väärin."
 msgid "User-Agent header missing from request"
 msgstr "User-Agent-otsikko puuttuu viestistä"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Kentän nimi ei voi olla tyhjä."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Valitse vähintään yksi."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Kentän tyyppiä ei tueta näytettäväksi profiilin yhteenvedossa."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Virheellinen kenttätyyppi."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Vain 2 profiilikenttää voi näyttää profiiliyhteenvedossa."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Samanniminen kenttä on jo olemassa. "
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Oletusarvoista mukautettua kenttää ei voi päivittää."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Endpoint ei ole käytettävissä tuotannossa."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend ei ole käytössä."
 
@@ -5285,7 +5842,7 @@ msgstr "Sinun täytyy määritellä ainakin yksi sähköpostiosoite."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5334,19 +5891,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Puuttuva lähettäjä"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Peilaus ei ole sallittu vastaanottajan käyttäjätunnukselle"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Virheellinen toistettu viesti"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr-peilaus ei ole sallittua tässä organisaatiossa"
 
@@ -5362,42 +5919,46 @@ msgstr "Käyttäjä on jo mykistetty"
 msgid "User is not muted"
 msgstr "Käyttäjä ei ole mykistetty"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Läsnäolo ei ole tuettu boteille."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Ei läsnäolotietoja käyttäjälle {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Asiakasohjelma ei antanut uusia arvoja."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Asiakkaan on välitettävä emoji_name, jos hän välittää joko emoji_code:n tai reaction_type:n."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Tyhjä tai väärän pituinen token"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Virheellinen APNS-token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5412,55 +5973,55 @@ msgstr "Vähintään yksi argumentti seuraavista on oltava: emoji_name, emoji_co
 msgid "Read receipts are disabled in this organization."
 msgstr "Vastaanottoilmoitukset on poistettu käytössä tässä organisaatiossa"
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Vähintään yksi todennusmenetelmä on oltava käytössä."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "On oltava demo-organisaatio."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Verkkotunnus {domain} on jo osa organisaatiotasi."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Verkkotunnukselle {domain} ei löytynyt merkintää. "
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Sinun täytyy lähettää ainoastaan yksi tiedosto."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5494,7 +6055,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Sinun täytyy lähettää ainoastaan yksi kuvake."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkiyttäjää ei löytynyt"
 
@@ -5522,71 +6083,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Yksityisiä kanavia ei voi asettaa oletukseksi."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Sinun täytyy välittää joko \"new_description\" tai \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Virheellinen \"op\" arvo. Määritä joko \"add\" tai \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Kanavalla on jo kyseinen nimi!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Ei mitään tehtävää. Määritä vähintään joko \"add\" tai \"delete\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} lisäsi sinut tilaajaksi kanavalle {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} lisäsi sinut tilaajaksi kanaville:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Kanavalle ({stream_name}) pääsy ei onnistu."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Voit kutsua ainoastaan toisia Zephyr-peilauksen käyttäjiä yksityisille kanaville."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} loi seuraavat kanavat: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} loi uuden kanavan: {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "uudet kanavat"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** kanava, jonka on luonut {user_name}. **Kuvaus:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5595,7 +6156,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Virheellinen json aliviestille"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Et ole valtuutettu katsomaan tätä tiedostoa.
"
 
@@ -5619,112 +6180,112 @@ msgstr "Tyhjä 'to' lista"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Virheellinen token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Virheellinen tiedostonimi"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Sinun pitää määritellä lähetettävä tiedosto"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Voit lähettää ainoastaan yhden tiedoston kerrallaan"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Uutta tietoa ei ole toimitettu"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Käyttäjä {user_id} on jo tämän ryhmän jäsen"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Käyttäjäryhmä {group_id} on jo tämän ryhmän aliryhmä."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Käyttäjäryhmä {group_id} ei ole tämän ryhmän aliryhmä"
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Avatarin muutokset on estetty tässä organisaatiossa."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Sähköpostinosoitteen muuttaminen on poistettu käytöstä tässä organisaatiossa."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Virheellinen default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Zulip-salasanaasi hallitaan LDAP:ssa"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Väärä salasana!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Uusi salasana on liian heikko!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Sinun täytyy lähettää ainoastaan yksi avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Aihe ei ole mykistetty"
 
@@ -5785,43 +6346,43 @@ msgstr "Kertakäyttöiset sähköpostiosoitteet eivät ole sallittuja tässä or
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Virheellinen Zoom-käyttöoikeustunnus"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom-tunnuksia ei ole määritetty"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Virheellinen Zoom-istunnon tunniste"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Virheelliset Zoom-tunnukset"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Zoom-puhelun aloittaminen epäonnistui"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton ei ole määritetty."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Virheellinen allekirjoitus."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Virhe yhteyden muodostamisessa Big Blue Button -palvelimeen. "
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Big Blue Button -palvelimen todennusvirhe."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Big Blue Button-palvelin palautti tuntemattoman virheen."
 
@@ -5854,11 +6415,11 @@ msgstr "Virheellinen tietosisältö"
 msgid "Unknown webhook request"
 msgstr "Tuntematon webhook pyyntö"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Aihe ei voi olla tyhjä"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Sisältö ei voi olla tyhjä"
 
@@ -5885,7 +6446,7 @@ msgstr "Newrelic-webhook pitää olla tilassa [createdacvticadertknogledegdiaclo
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Kykenemätön käsittelemään Pivotal-tietoja"
 
@@ -5902,83 +6463,105 @@ msgstr "Viesti Slackistä"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Virheellinen aliverkkotunnus push-ilmoituksen ohjaajalle"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Täytyy vahvistaa oikealla Zulip-palvelimen API-avaimella"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Virheellinen UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Virheellinen token-tyyppi"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "user_id tai user_uuid puuttuu"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Tiedot ovat epäkunnossa."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Salasanasi on vaihdettava."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "id_token parametri puuttuu"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Virheellinen OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Ei voi käyttää yhtäaikaisesti mobile_flow_otp ja desktop_flow_otp."
diff --git a/locale/fi/translations.json b/locale/fi/translations.json
index 8129f350cf..73a152b890 100644
--- a/locale/fi/translations.json
+++ b/locale/fi/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(liitetty tiedosto)",
   "(forever)": "(ikuisesti)",
   "(hidden)": "(piilotettu)",
-  "(no description)": "(ei kuvausta)",
   "(no topic)": "(ei aihetta)",
   "(or )": "",
   "(you)": "(sinä)",
   "({message_retention_days} days)": "({message_retention_days} päivää)",
   "/dark (Switch to the dark theme)": "/dark (Vaihda tummaan teemaan)",
   "/light (Switch to light theme)": "/light (Vaihda vaaleaan teemaan)",
-  "/me is excited (Display action text)": "/me Olen innoissani (Näytä toimintaaviesti)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Minne mennään lounaalle tänään? (Luo kysely)",
-  "/todo (Create a todo list)": "/todo (Luo lista: tehtävä, kuvaus)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 päivä",
   "1 hour": "1 tunti",
   "1 week": "1 viikko",
@@ -28,7 +27,7 @@
   "6 hours": "6 tuntia",
   "Total messages: {total_messages}": "Viestejä yhteensä: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} poistetaan viesteistä missä se on jaettua. Tätä ei voi perua.
",
-  "Stream will be announced in #{notifications_stream}.
": "Kanavasta ilmoitetaan #{notifications_stream}-kanavalla.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Etsit viestejä, joika on lähettänyt useampi kuin yksi ihminen. Tämä ei ole mahdollista.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Etsit viestejä, jotka kuuluvat useammalle kuin yhdelle kanavalle. Tämä ei ole mahdollista.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Etsit viestejä, jotka kuuluvat useammalle kuin yhdelle kanavalle. Tämä ei ole mahdollista.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Aktiivisuus ei tiedossa",
   "Add": "Lisää",
   "Add GIF": "Lisää GIF",
+  "Add a description": "",
   "Add a new alert word": "Lisää uusi hälytyssana",
   "Add a new bot": "Lisää uusi botti",
   "Add a new code playground": "Lisää uusi koodin leikkikenttä",
@@ -207,6 +207,7 @@
   "Bot": "Botti",
   "Bot email": "Botin sähköposti",
   "Bot email (a-z, 0-9, and dashes only)": "Botin sähköposti (vain merkit a-z, 0-9 ja miinus-merkki sallittu)",
+  "Bot is deactivated": "",
   "Bot owner": "Botin omistaja",
   "Bot type": "Botin tyyppi",
   "Bots": "Botit",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Sulje tämä valintaikkuna",
   "Code": "",
   "Code playgrounds": "Koodin leikkikenttä",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Koodileikkipaikat ovat interaktiivisia selaimen sisäisiä kehitysympäristöjä, kuten replit, jotka on suunniteltu helpottamaan koodin muokkaamista ja virheenkorjausta. Zulip-koodilohot jotka on merkitty ohjelmoiintikielelle sisältävät napin joka näkyy kun osoitin on koodin päällä josta voi avata lohon leikkikentälle.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Pienennä kirjoitusalue",
   "Collapse direct messages": "Pienennä suoraviestit",
   "Collapse message": "Laita viestit yhteen",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Määritä organisaatiosi todennusmenetelmät.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Määritä oletuskanavat jotka uudet käyttäjät tilaavat liittyessään organisaatioosi.",
   "Confirm": "Vahvista",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Harkitse hakea kaikista julkisista kanavista.",
   "Contact a moderator to resolve this topic.": "Ota yhteys moderaattoriin aiheen ratkaisemiseksi.",
   "Contact a moderator to unresolve this topic.": "Ota yhteys moderaattoriin aiheen epäratkaisemiseksi.",
@@ -292,6 +294,7 @@
   "Copy code": "Kopioi koodi",
   "Copy link": "Kopioi linkki",
   "Copy link to message": "Kopioi linkki viestiin",
+  "Copy link to profile": "",
   "Copy link to topic": "Kopioi linkki aiheeseen",
   "Copy mention syntax": "Kopioi mainitsemisen syntaksi",
   "Copy version": "Kopioi versio",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Poista kaikki luonnokset",
   "Delete all selected drafts": "",
   "Delete code playground?": "Poistetaanko koodileikkikenttä?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Poistetaanko oma profiilikenttä?",
   "Delete data export?": "Poistetaanko datan vienti?\n",
   "Delete draft": "Poista luonnos",
@@ -413,7 +417,6 @@
   "Domain": "Verkkotunnus",
   "Don’t allow disposable email addresses": "Älä salli kertakäyttöisiä sähköpostiosoitteita",
   "Download": "Lataa",
-  "Download .zuliprc": "Lataa .zuliprc",
   "Download botserverrc": "Lataa botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Lataa kaikkien aktiivisten lähtevien webhook bottien määritykset Zulipin Botserver muodossa.",
   "Download file": "Lataa tiedosto",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Koulutus (ei tuota voittoa)",
   "Education (non-profit)": "Opetus (ei tuota voittoa)",
   "Effect": "Vaikutus",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Sähköposti",
   "Email address": "Sähköpostiosoite",
   "Email address changes are disabled in this organization.": "Sähköpostinosoitteen muuttaminen on poistettu käytöstä tässä organisaatiossa.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Esimerkiksi, voit asettaa koodipelikentän koodilohot pythoniksi:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Lisää esimerkkejä ja teknisiä yksityiskohtia ohjekeskuksen dokumentaatiossa koodipelikenttien lisäämisestä",
   "For more examples, see the help center documentation on adding linkifiers.": "Lisää esimerkkejä ohjekeskuksen dokumentaatiossa linkittäjien lisäämisestä",
   "Forgot it?": "Unohditko?",
@@ -606,6 +610,8 @@
   "Image": "Kuva",
   "In a meeting": "Kokouksessa",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inaktiivinen",
   "Inactive bots": "Poistetut botit",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "Hallinnoi tätä bottia",
   "Manage this user": "Hallitse tätä käyttäjää",
   "Manage user": "Hallitse käyttäjää",
+  "Manage your API key": "",
   "March": "Maaliskuu",
   "Mark all messages as read": "Merkitse kaikki viestit luetuiksi",
   "Mark all messages as read?": "Merkitäänkö kaikki viestit luetuiksi?",
+  "Mark all messages as unread": "",
   "Mark as read": "Merkitse luetuksi",
   "Mark as resolved": "Merkitse ratkaistuksi",
   "Mark as unread from here": "Merkitse lukemattomaksi tästä eteenpäin",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mainittu",
   "Mentions": "Maininnat",
   "Menus": "Valikot",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Kirjoita viesti #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Kirjoita viesti #{stream_name} > {topic_name}",
   "Message actions": "Viestitoiminnot",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Kirjoita viesti {recipient_label}",
   "Message {recipient_names}": "Kirjoita viesti {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Kirjoita viesti {recipient_name} ({recipient_status})",
+  "Messages": "Viestit",
   "Messages in all public streams": "Viestit julkisissa kanavissa",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Ei vanhene koskaan",
   "New": "Uusi",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Uusi sähköposti",
   "New message": "Uusi viesti",
   "New option": "Uusi valinta",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Seuraava lukematon aihe",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Yksikään botti ei vastaa nykyistä suodatinta.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Ei kuvausta.",
   "No drafts selected": "",
   "No drafts.": "Ei luonnoksia.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Yksikään kutsu ei vastaa nykyistä suodatinta.",
   "No language set": "Ei kieltä asetettuna",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Ei linkkiyttäjiä.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Ei vastaavia käyttäjiä",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Ei aiheita merkittyinä ratkaistuksi.",
   "No topics match your current filter.": "Yksikään aihe ei vastaa suodatinta.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Ei käyttäjäryhmien tilauksia.",
   "No user groups": "",
   "No user to subscribe.": "Ei tilaajia",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "Ei tuota voittoa (rekisteröity)",
   "None": "Ei mikään",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Huomio, että mikä tahansa bottin jota hallinnoit otetaan pois käytöstä.",
   "Note that organizations are limited to five exports per week.": "Huomaa, että organisaatioita on rajoitettu viiteen poimintaan viikossa.",
   "Nothing to preview": "Ei mitään esikatseltavaksi",
@@ -932,6 +940,7 @@
   "Other permissions": "Muut käyttöoikeudet",
   "Other settings": "Muut asetukset",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Sairaslomalla",
   "Outgoing webhook message format": "Lähtevä webhook viestiformaatti",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Vaadi aihe kanavan viesteissä",
   "Research": "Tutkimustyö",
   "Resend": "Lähetä uudelleen",
-  "Resend invitation": "Lähetä kutsu uudelleen",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Uudelleen lähetys kohtasi virheen. Lataa sivu uudelleen ja yritä uudestaan.",
+  "Reset to default notifications": "",
   "Reset zoom": "Aseta uusi zoom",
   "Restore draft": "Palauta luonnos",
   "Restrict email domains of new users?": "Rajoitetaanko uusien käyttäjien sähköpostin verkkotunnuksia?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Etsi  aiheista tai viestisisällöistä.",
   "Search people": "Hae käyttäjiä",
   "Search results": "Hakutulokset",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Katso kuinka konfiguroida sähköposti.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Valitse kanava alapuolelta tai vaihda aiheen nimi.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Näytä tähdellisten viestin määrä",
   "Show status text": "Näytä statusteksti",
   "Show unread counts for": "",
-  "Show/change your API key": "Näytä/muuta API-avain",
   "Showing messages since {time_string}.": "",
   "Sign up": "Rekisteröidy",
   "Silent mentions do not trigger notifications.": "Hiljaiset maininnat eivät aiheuta ilmoituksia.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Kanavan kuvaus ei voi sisältää rivinvaihto-merkkejä.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Heidän salasanat pyyhitään meidän järjestelmästä, ja kaikki heidän ylläpitämät botit poistetaan käytöstä.",
   "Theme": "Teema",
+  "There are no bots.": "",
   "There are no current alert words.": "Hälytyssanoja ei ole.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "Tämä botti on poistettu käytöstä.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "Tämä poistaa  profiilikenttiä 1 käyttäjältä.",
   "This will delete the  profile field for  users.": "Tämä poistaa  profiilikenttiä  käyttäjiltä.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Torstai",
   "Time": "Aika",
   "Time format": "Aikamuoto",
@@ -1240,6 +1259,7 @@
   "Today": "Tänään",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Vaihda tilauksen tilaa",
   "Toggle the gear menu": "Vaihda ratas valikon tilaa",
   "Toggle topic mute": "Vaihda aiheen mykistyksen tilaa",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "Sinulla ei ole lupaa postata tälle kanavalle.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Sulip-palvelin {display_version}",
   "Zulip Server {display_version} (modified)": "Zulip-palvelin {display_version} (muokattu)",
   "Zulip Server {display_version} (patched)": "Zulip-palvlein {display_version} (paikattu)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulipin pitää lähettää sähköposteja varmistaakseen käyttäjien osoitteet ja lähettääkseen ilmoituksia.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip tarvitsee valtuutuksen työpöytäilmoitusten lähettämiseen.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulipin käännökset on tuottanut upea vapaaehtoisten kääntäjien yhteisömme. Jos haluat auttaa, katso Zulip-käännösohjeet.",
@@ -1541,6 +1561,9 @@
   "more topics": "selaa aiheita",
   "she/her": "hän/hänet, fem.",
   "they/them": "hän/hänet, neutr.",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 5500b9b4c2..faec574415 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -33,7 +33,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Tim Abbott , 2018,2020-2023\n"
 "Language-Team: French (http://app.transifex.com/zulip/zulip/language/fr/)\n"
@@ -43,57 +43,51 @@ msgstr ""
 "Language: fr\n"
 "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Non autorisé pour les utilisateurs invités"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organisation non valide"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Canaux publics"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Canaux privés"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Messages directs"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Messages directs de groupe"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Canal manquant pour le graphique : {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Nom du graphique inconnu : {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "L'heure de début est postérieure à l'heure de fin. Début : {start}, Fin : {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Aucune donnée d'analyse disponible. Veuillez contacter votre administrateur système."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Paramètres invalides"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -102,7 +96,7 @@ msgid ""
 "users to join."
 msgstr "Votre organisation n'a plus de licences Zulip et ne peut plus accepter de nouveaux utilisateurs. Veuillez [augmenter le nombre de licences]({billing_page_link}) ou [désactiver les utilisateurs inactifs]({deactivate_user_help_page_link}) pour permettre à de nouveaux utilisateurs de s'inscrire."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -111,7 +105,7 @@ msgid ""
 "join."
 msgstr "Votre organisation n'a plus qu'une seule licence Zulip. Vous pouvez [augmenter le nombre de licences]({billing_page_link}) ou [désactiver les utilisateurs inactifs]({deactivate_user_help_page_link}) pour permettre plus qu'une seule inscription."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -120,7 +114,7 @@ msgid ""
 "join."
 msgstr "Votre organisation n'a plus que deux licences Zulip. Vous pouvez [augmenter le nombre de licences]({billing_page_link}) ou [désactiver les utilisateurs inactifs]({deactivate_user_help_page_link}) pour permettre à plus de deux utilisateurs de s'inscrire."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -129,7 +123,7 @@ msgid ""
 "join."
 msgstr "Votre organisation n'a plus que trois licences Zulip. Vous pouvez [augmenter le nombre de licences]({billing_page_link}) ou [désactiver les utilisateurs inactifs]({deactivate_user_help_page_link}) pour permettre à plus de trois utilisateurs de s'inscrire."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -138,11 +132,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Un nouveau membre ({email}) n'a pas pu rejoindre votre organisation car toutes les licences Zulip sont en cours d'utilisation. Veuillez [augmenter le nombre de licences]({billing_page_link}) ou [désactiver les utilisateurs inactifs]({deactivate_user_help_page_link}) pour permettre à de nouveaux membres de s'inscrire."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Toutes les licences Zulip pour cette organisation sont actuellement utilisées."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -158,124 +152,124 @@ msgstr "L'enregistrement est désactivé"
 msgid "Invalid remote server."
 msgstr "Serveur à distance non valide."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Vous devez acheter des licenses pour tous les utilisateurs actifs dans votre organisation (minimum {min_licenses})"
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Les factures comportant plus de {max_licenses} licences ne peuvent pas être traitées à partir de cette page. Pour terminer la mise à niveau, veuillez contacter {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Aucune méthode de paiement n'est enregistrée."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} termine dans {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Méthode de paiement inconnue. Merci de contacter {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Quelque chose s'est mal passé. Merci de contacter {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Quelque chose s'est mal passé. Merci de recharger la page."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Quelque chose s'est mal passé. Merci de patienter quelques secondes."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Veuillez ajouter une carte de crédit avant de commencer votre essai gratuit."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Impossible de mettre  le plan à jour. Le plan a expiré et a été remplacé par un nouveau plan."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Impossible de mettre le plan à jour. Ce type de plan n'est plus disponible."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Impossible de mettre à jour les licences manuellement. Votre plan induit une gestion automatique des licences."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Votre forfait comprend déjà {licenses} licences pour la période de facturation en cours."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Vous ne pouvez pas réduire les licences dans la période de facturation en cours."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Le renouvellement de votre plan est déjà programmé avec {licenses_at_next_renewal} licences."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Rien à changer"
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Aucun client pour cette organisation !"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Session introuvable"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Doit être un gestionnaire de facturation ou un propriétaire d'organisation"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Intention de paiement introuvable"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Passer le stripe_session_id ou le stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -283,54 +277,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "La demande d'hébergement sponsorisé de votre organisation a été approuvée ! Vous avez été mis à niveau vers {plan_name}, gratuitement. {emoji}\n\nSi vous pouviez {begin_link} mentionner Zulip comme sponsor sur votre site web {end_link}, nous vous en serions très reconnaissants !"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "Le jeton d'accès à la facturation a expiré."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Jeton d'accès à la facturation non valide."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "L'enregistrement de votre serveur a été désactivé."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Paramètres invalides"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Erreur"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Méthode non autorisée (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Page introuvable (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -339,8 +340,41 @@ msgid ""
 "                        "
 msgstr "\nSi cette erreur est inattendue, vous pouvez contacter l'assistance ."
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Méthode non autorisée (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Erreur de serveur interne"
 
@@ -445,7 +479,7 @@ msgstr "Actifs lors des 15 derniers jours"
 msgid "Total users"
 msgstr "Total des utilisateurs"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Utilisateurs"
 
@@ -585,37 +619,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Assurez-vous d'avoir correctement copié le lien dans votre navigateur. Si vous obtenez toujours cette page, c'est probablement notre faute. Nous sommes désolés."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Facturation"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Fermer le modal"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Peu importe"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Rétrograder"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Annuler"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Rétrograder"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirmer"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Peu importe"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Statut de facturation"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Limite de débit dépassée"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Limite de débit dépassée."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Vous pouvez réessayer dans %(retry_after)s secondes."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Mise à niveau"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Convertir l'organisation de démonstration avant la mise à niveau."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -636,6 +766,451 @@ msgstr "Catégories"
 msgid "All"
 msgstr "Tous"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "La communauté de développement Zulip"
@@ -655,11 +1230,7 @@ msgstr "Inscrivez-vous en tant qu'auto-hébergeur"
 msgid "Join as a contributor"
 msgstr "Rejoindre en tant que contributeur"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Statut de facturation"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -674,12 +1245,12 @@ msgstr "Statut de facturation"
 msgid "Create organization"
 msgstr "Créer une organisation"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Tarifs"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -712,51 +1283,48 @@ msgstr "Tarifs éducation"
 msgid "View pricing"
 msgstr "Voir les prix"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip pour les entreprises"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contacter le support"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "De"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisation"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Sujet"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Message"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Soumettre"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Merci de nous avoir contactés"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Merci de nous avoir contactés!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Nous vous contacterons bientôt."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -772,14 +1340,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Essayer Zulip maintenant"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Mise à niveau"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Convertir l'organisation de démonstration avant la mise à niveau."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -827,7 +1387,7 @@ msgstr "Continuer"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "S'inscrire"
 
@@ -860,8 +1420,8 @@ msgstr "Vous possédez déjà un compte ?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Se connecter"
 
@@ -894,26 +1454,22 @@ msgstr "Si ce message ne disparaît pas, essayez de rech
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Erreur de chargement de Zulip. Essayez de recharger la page."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Impossible de se connecter à Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Les mises à jour peuvent être retardées."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Réessayer bientôt…"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Essayer maintenant."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Messages"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Erreur d'authentification de sous-domaine"
@@ -1136,21 +1692,21 @@ msgstr "Utilisateurs invités"
 msgid "Normal users"
 msgstr "Utilisateurs normaux"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "Transférer des courriels vers un compte de courriels"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Fermer"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Mettre à jour"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2373,7 +2929,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2393,7 +2949,16 @@ msgid ""
 "                    "
 msgstr "\nCouriels envoyés ! Vous ne recevrez des courriels qu'à des adresses\nassociées aux organisations de Zulip. Les adresses saisies\nà la page précédente sont énumérées ci-dessous :"
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2403,12 +2968,12 @@ msgid ""
 "                    "
 msgstr "\nSaisissez votre adresse de couriel pour recevoir un couriel contenant les URL \nde toutes les organisations Zulip Cloud dans lesquelles vous avez des\ncomptes actifs. Si vous avez également oublié votre mot de passe, vous pouvez le réinitialiser,\nvous pouvez le réinitialiser."
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Adresse courriel"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Trouver des comptes"
 
@@ -2440,7 +3005,7 @@ msgstr "Intégrations"
 msgid "Desktop & mobile apps"
 msgstr "Applications de bureau et mobile"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nouvelle organisation"
 
@@ -2808,13 +3373,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Contactez la personne qui vous a invité et demandez-lui d'augmenter le nombre de licences, puis réessayez."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Limite de débit dépassée"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Limite de débit dépassée."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2822,11 +3383,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Vous avez dépassé la limite de fréquence à laquelle un utilisateur peut effectuer cette action."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Vous pouvez réessayer dans %(retry_after)s secondes."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2995,6 +3551,22 @@ msgstr "Qu'est-ce qui vous intéresse ?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Abonnez-moi à la lettre d'information occasionnelle de Zulip (quelques e-mails par an)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Réinitialiser votre mot de passe"
@@ -3152,123 +3724,107 @@ msgid ""
 "                        "
 msgstr "\n                        Vous pouvez aussi\n                        utiliser l'application\n                        de bureau Zulip.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "inscriptions"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} vient de s'inscrire sur Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} a accepté votre invitation à rejoindre Zulip !"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "Impossible d'activer un compte provisoire ; demandez à l'utilisateur de s'inscrire à la place."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Ordre de mappage non valide."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Champ id {id} introuvable. "
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "Le nom de groupe de canaux par défaut \"{group_name}\" est non valide."
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' est un canal par défaut et ne peut être ajouté à '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Le groupe de canaux par défaut '{group_name}' existe déjà"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Le canal '{stream_name}' est déjà présent dans le groupe de canaux par défaut '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Le canal '{stream_name}' n'est pas présent dans le groupe de canaux par défaut '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Pour protéger les utilisateurs, Zulip limite le nombre d'invitations que vous pouvez envoyer en une journée. Étant donné que vous avez atteint la limite, aucune invitation n'a été envoyée."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Votre inscription est trop récente pour que vous puissiez inviter des personnes à rejoindre cette organisation. Merci de demander à un administrateur de cette organisation, ou à un utilisateur plus ancien."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Certaines adresses courriels ne sont pas valides, nous n'avons donc envoyé aucune invitation."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Nous n'avons pas été capable d'inviter quelqu’un."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3298,72 +3854,72 @@ msgstr "Impossible de modifier le contenu du message en changeant de canal"
 msgid "Widgets cannot be edited."
 msgstr "Le widgets ne peuvent être modifiés."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Votre organisation a désactivé la modification des messages"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Vous n'avez pas la permission de modifier ce message"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "La limite de temps pour modifier ce message est dépassée."
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} a marqué ce sujet comme résolu."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} a marqué ce sujet comme non résolu."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Ce sujet a été déplacé vers {new_location} par {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Un message a été déplacé de ce sujet vers {new_location} par {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} messages ont été déplacés de ce sujet vers {new_location} par {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Ce sujet a été déplacé ici de {old_location} par {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[Un message]({message_link}) a été déplacé ici depuis {old_location} par {user}."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} messages ont été déplacés ici de {old_location} par {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Votre organisation a désactivé la modification des messages"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Vous n'avez pas la permission de modifier ce message"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "La limite de temps pour modifier ce message est dépassée."
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "Le temps limite pour modifier ce sujet de message est dépassé."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Vous n'avez pas la permission de déplacer ce message"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Le temps limite pour modifier ce canal de messages est dépassé "
 
@@ -3382,137 +3938,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Message(s) invalide(s)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Impossible d'afficher le message"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Exactement un canal attendu"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Type de données non valide pour un canal"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Type de données non valide pour un destinataire"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Les listes de destinataires peuvent intégrer des adresses courriel ou ID d'utilisateurs, mais pas les deux."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Votre robot {bot_identity} a essayé d'envoyer un message sur le canal avec l'ID {stream_id}, mais aucun canal n'existe avec cette ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Votre robot {bot_identity} a essayé d'envoyer un message sur le canal {stream_name}, mais ce canal n'existe pas. Cliquez [ici]({new_stream_link}) pour le créer."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Votre robot {bot_identity} a essayé d'envoyer un message sur le canal {stream_name}. Ce canal existe mais n'a aucun abonné."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Les messages directs sont désactivés dans cette organisation."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Les sujets sont obligatoires dans cette organisation"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: Contenu JSON non valide reçu du programmeur de l'API"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets : {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Un emoji personnalisé avec le même nom existe déjà."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Le message programmé a déjà été envoyé"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "La date de livraison prévue doit se situer dans le futur."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Le message ne peut pas être envoyé à l'heure programmée."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Ce message que vous avez programmé pour {delivery_datetime} n'a pas été envoyé à cause de cette erreur :"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[Voir les messages programmés](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Le canal est déjà désactivé"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} a modifié les [permissions d'accès](/help/stream-permissions) pour ce canal de **{old_policy}** à **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3521,38 +4082,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} a modifié les [permissions de publication](/help/stream-sending-policy) pour ce canal: * **Anciennes permissions** : {old_policy}. * **Nouvelles permissions** : {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} a renommé le canal {old_stream_name} à {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Aucune description."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} a modifié la description de ce canal."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Ancienne description"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Nouvelle description"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Pour toujours"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Les messages de ce canal seront désormais conservés pour toujours."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3566,7 +4127,7 @@ msgstr "{user} a modifié la [période de rétention des messages](/help/message
 msgid "You cannot attach a submessage to this message."
 msgstr "Vous ne pouvez pas joindre un sous-message à ce message. "
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3576,187 +4137,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Cette API n'est pas disponible pour les robots de webhook entrants."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Le compte n'est pas associé avec ce sous-domaine."
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Ce paramètre n'accepte pas les requêtes de robots."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Doit être un administrateur du serveur"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permission insuffisante"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Ce paramètre requière une authentification HTTP basique."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "En-tête d'autorisation invalide pour l'authentification basique"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "En-tête d'autorisation manquant pour l'authentification basique"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Les robots de webhook n'ont accès qu'aux webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Votre compte {username} a été désactivé. Veuillez contacter l'administrateur de votre organisation pour le réactiver."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Le mot de passe est trop faible."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Le sous-domaine a besoin d'une taille de 3 ou plus."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Le sous-domaine ne peut pas démarrer ou se terminer avec un '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Le sous-domaine ne peut contenir que des lettres minuscules, des nombres et des '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Merci d'utiliser votre véritable adresse courriel."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "L'organisation que vous essayez de rejoindre avec {email} n'existe pas."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Veuillez demander une invitation pour {email} de la part de l'administrateur de l'organisation."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Votre adresse courriel, {email}, n'est pas dans un des domaines autorisés à s'inscrire pour les comptes de cette organisation."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Les adresses courriel contenant un + ne sont pas autorisées dans cette organisation."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Il n'est pas possible à de nouveaux membres de rejoindre cette organisation, car toutes les licences Zulip sont en cours d'utilisation. Veuillez contacter la personne qui vous a invité et lui demander d'augmenter le nombre de licences, puis réessayez."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nouveau mot de passe"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Confirmation du nouveau mot de passe"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Votre mot de passe a été désactivé car il est trop faible. Réinitialisez votre mot de passe pour en créer un nouveau."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Jeton"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Conseil : vous pouvez saisir plusieurs adresses électroniques en les séparant par une virgule."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Merci d'entrer au maximum 10 adresses courriel."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Nous n'avons pas pu trouver cette organisation Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Courriel invalide '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Sujet manquant"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Impossible d'envoyer sur plusieurs canaux."
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Canal manquant"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Le message doit avoir un destinataire"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Type de message invalide"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Pièce jointe invalide"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Une erreur est survenue pendant la suppression de la pièce-jointe. Merci de réessayer plus tard."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Le message doit avoir un destinataire !"
 
@@ -3813,88 +4374,88 @@ msgstr "Cet utilisateur a désactivé la synchronisation des brouillons."
 msgid "Draft does not exist"
 msgstr "Le brouillon n'existe pas"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Ouvrez Zulip pour afficher le contenu masqué"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Adresse courriel non valide."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "En-dehors de votre domaine."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Les adresses courriel contenant un + ne sont pas autorisées."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Réservé aux robots système"
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} possède déjà un compte"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Possède déjà un compte."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Le compte a été désactivé."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoji personnalisé non valide."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nom d'emoji personnalisé non valide."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "L'emoji personnalisé a été désactivé."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Code d'emoji non valide."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nom d'emoji invalide."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Type d'emoji invalide"
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Doit être un administrateur de l'organisation ou le créateur de l'emoji"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Les noms des emoji doivent se terminer par une lettre ou un chiffre."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Les noms d'emoji ne doivent contenir que des lettres minuscules anglaises, des chiffres, des espaces, des tirets et des traits de soulignement."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Le nom de l'emoji est manquant"
 
@@ -3902,119 +4463,119 @@ msgstr "Le nom de l'emoji est manquant"
 msgid "Could not allocate event queue"
 msgstr "Impossible d'allouer la file d'attente d'événements"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Non connecté : Authentification API ou session utilisateur requise"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Le canal '{stream}' n'existe pas"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Le canal avec ID '{stream_id}' n'existe pas"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "propriétaire de l'organisation"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "utilisateur"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Impossible de désactiver le seul {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Instruction d'inclusion Markdown non valide: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "L'utilisation de l'API a dépassé la limite"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON malformé"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Doit être un membre de l'organisation"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Doit être un administrateur de l'organisation"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Doit être un propriétaire de l'organisation"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Votre nom d'utilisateur ou votre mot de passe est incorrect"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Le compte est désactivé"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "L'organisation a été désactivée"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "L'inscription au service de notification push mobile pour votre serveur a été désactivée"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "L'authentification par mot de passe est désactivée dans cette organisation"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Votre mot de passe a été désactivé et doit être réinitialisé"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Clé API invalide"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Clé API mal formée"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Impossible d'analyser la demande : {webhook_name} a-t-il généré cet événement ?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Utilisateur non-authentifié"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Sous-domaine invalide"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Accès refusé"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4022,47 +4583,47 @@ msgid ""
 "messages in this topic."
 msgstr "Vous n'avez la permission de déplacer que les {total_messages_allowed_to_move}/{total_messages_in_topic} messages les plus récents de ce sujet."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Cette réaction existe déjà."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Cette réaction n'existe pas."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Nom d'utilisateur Twitter"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "Nom d'utilisateur GitHub"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Le compte externe personnalisé doit définir un motif d'URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Type de compte externe non valide"
 
@@ -4160,106 +4721,106 @@ msgstr "Productivité"
 msgid "Version control"
 msgstr "Contrôle de version"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Le message ne doit pas être vide"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Le message ne doit pas contenir d'octets nuls."
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Opérateur de restriction non valide : {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Argument 'anchor' manquant"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Ancre invalide"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Si vous êtes nouveau sur Zulip, consultez notre guide [Getting started with Zulip]({getting_started_url}) !"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Si vous êtes nouveau sur Zulip, consultez notre [Guide de démarrage]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "Nous avons également un guide pour [Configurer Zulip pour une classe] ({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "Nous disposons également d'un guide pour [la mise en place de votre organisation] ({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Notez qu'il s'agit d'une [organisation de démonstration]({demo_organization_help_url}) et qu'elle sera **automatiquement supprimée** dans 30 jours."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Bonjour, et bienvenue sur Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Ceci est un message direct de ma part, Welcome Bot."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Je peux aussi vous aider à vous mettre à niveau! Cliquez n'importe où sur ce message ou appuyez sur « r » pour répondre."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Voici quelques messages que je comprends :"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Vous pouvez [télécharger](/apps/) les [applications mobiles et de bureau](/apps/). Zulip fonctionne également très bien dans un navigateur."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Accéder à [Paramètres de profil](#settings/profile) pour ajouter une [photo de profil](/help/change-your-profile-picture) et modifier vos [informations de profil](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4268,119 +4829,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "Dans Zulip, les canaux [déterminent qui reçoit un message](/help/streams-and-topics). Ils sont similaires aux canaux d'autres applications de chat."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Parcourir et s'abonner aux canaux](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "Dans Zulip, les sujets [vous disent de quoi parle un message](/help/streams-and-topics). Ce sont des sujets légers, très similaires à la ligne d'objet d'un e-mail."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Consultez [Recent conversations](#récent) pour voir ce qui se passe ! Vous pouvez revenir à cette conversation en cliquant sur \"Messages directs\" en haut à gauche."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Les [raccourcis clavier] (#keyboard-shortcuts) de Zulip vous permettent de naviguer rapidement et efficacement dans l'application."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Appuyer sur `?` à tout moment pour voir un [aide-mémoire](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip utilise le [Markdown](/help/format-your-message-using-markdown), un format intuitif pour **gras**, *italics*, les listes à puces, etc. Cliquer [ici] (#message-formatting) pour obtenir un aide-mémoire."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Consultez nos [conseils de messagerie](/help/messaging-tips) pour en savoir plus sur les réactions emoji, les blocs de code et bien plus encore !"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Consultez notre [Guide de démarrage](/help/getting-started-with-zulip) ou parcourez le [Centre d'aide](/help/) pour en savoir plus !"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Désolé, je n'ai pas compris votre message. Veuillez essayer l'une des commandes suivantes :"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Ceci est un canal privé, tel qu'indiqué par l'iĉone de cadenas à côté du nom de canal."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Les canaux privés ne sont visibles qu'aux membres du canal."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Pour gérer ce canal, ouvrez les [paramètres du Canal]({stream_settings_url}) et cliquez sur `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Ceci est un message dans le canal #**{default_notification_stream_name}** avec le sujet `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Les sujets fournissent un cadre léger pour garder les conversations organisées."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Vous pouvez en apprendre plus sur les sujets sur la page [Canaux et sujets]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Ceci est un message dans le canal #**{default_notification_stream_name}** avec le sujet `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "JSON non valide dans la réponse"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Format de réponse non valide"
 
@@ -4394,45 +4955,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Le jeton n'existe pas."
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Cette organisation a désactivé l'inclusion du contenu des messages dans les notifications push mobiles"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} a mentionné @{user_group_name} :"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} vous a mentionné :"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} a mentionné tout le monde :"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4444,23 +5005,23 @@ msgstr "Type de donnée non valide pour ce canal ID"
 msgid "Recipient list may only contain user IDs"
 msgstr "La liste des destinataires ne peut contenir que des identifiants d'utilisateurs"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "L'utilisateur n'est pas autorisé pour cette requête"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' n'utilise plus Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "Vous ne pouvez pas envoyer de messages directs en dehors de votre organisation."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4480,21 +5041,21 @@ msgstr "Argument '{var_name}' manquant"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Mauvaise valeur pour '{var_name}': {bad_value} "
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Charge utile malformée"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Le message programmé n'existe pas"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4531,7 +5092,7 @@ msgstr "Veuillez choisir parmi 'stream' ou 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "ID de canal invalide"
 
@@ -4545,7 +5106,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4554,7 +5115,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Les canaux publics sur le Web ne sont pas activés."
 
@@ -4586,28 +5147,28 @@ msgstr "Le sujet ne peut pas être vide !"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Les données de l'abonné à ce canal ne sont pas disponibles"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Impossible de retrouver la liste des abonnés pour ce canal privé"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} n'est pas un booléen"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} n'est pas une date"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} n'est pas un dict"
@@ -4618,18 +5179,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} n'est pas un nombre réel"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} est trop petit "
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} n'est pas un entier"
@@ -4639,24 +5200,24 @@ msgstr "{var_name} n'est pas un entier"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} est trop grand"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} n'est pas une liste"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} non valide"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} est trop longue (limite de caractères: {max_length})"
@@ -4666,8 +5227,8 @@ msgstr "{var_name} est trop longue (limite de caractères: {max_length})"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} n'est pas une chaîne"
@@ -4686,21 +5247,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "L'envoi de ce fichier provoquerait le dépassement du quota de votre organisation."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Impossible de décoder l'image; avez vous envoyé un fichier d'image?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "La taille de l'image dépasse la limite."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Image animée corrompue."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Format d'image animée inconnu."
 
@@ -4757,161 +5318,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nom trop long !"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nom trop court !"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Caractères invalides dans le nom !"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Format invalide !"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Ce nom est déjà utilisé !"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Mauvais nom ou nom d'utilisateur"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Données de configuration non valides !"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Type de robot non valide"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Type d'interface non valide"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Aucun robot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Aucun utilisateur"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "L'utilisateur est désactivé"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} ne peut pas être vide."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "La longueur {length} de {var_name} est incorrecte; elle devrait être {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} n'est pas un fuseau horaire reconnu"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} n'est pas un code de couleur hexadécimal valide"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} devrait avoir exactement {length} éléments"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "La clé {key_name} est manquante dans {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} n'est pas un allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} est faux)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} n'est pas une URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "Le modèle d'URL doit contenir "%(username)s"."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' ne peut pas être vide."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Le champ ne doit pas avoir de choix en double."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' n'est pas une option valide pour '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} n'est ni une chaîne ni une liste d'entiers"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} n'est ni une chaîne ni un entier"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} n'a pas de longueur"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} est manquant"
@@ -4945,215 +5506,211 @@ msgstr "Erreur CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "événements de canal"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Disponible sur Zulip Cloud Standard. Mettre à niveau pour accéder."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "Intégration GIPHY désactivée"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "Autoriser les GIF classés Y (Public très jeune)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "Autoriser les GIF classés G (Public général)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "Autoriser les GIF classés PG (Conseil parental)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "Autoriser les GIF classés PG-13 (Conseil parental - moins de 13 ans)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "Autoriser les GIF classés R (Restreint)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Caractères invalides dans le nom de l'emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Erreur d'expression régulière inconnue"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Format d'URL invalide."
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "Le groupe %(name)r dans le modèle d'URL n'est pas présent dans le motif de l'identificateur de lien."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Le groupe %(name)r dans le modèle de lien n'est pas présent dans le modèle d'URL."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Caractères invalides dans la langue des pygments"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Administrateurs, modérateurs, membres et invités"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Administrateurs, modérateurs et membres"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Administrateurs et modérateurs"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Seulement les administrateurs"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Personne"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Administrateur de l'organisation"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administrateur de l'organisation"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Modérateur"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Membre"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Invité"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Public sur le Web"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Publique"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Privé, historique protégé"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Privé, historique protégé"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Public, historique protégé"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Tous les abonnés du canal peuvent envoyer des messages"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Seuls les administrateurs de l'organisation peuvent envoyer des messages"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Seuls les administrateurs de l'organisation et les modérateurs peuvent envoyer des messages"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Seuls les membres complets peuvent envoyer des messages"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoji unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji personnalisé"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoji spécial Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Liste des options"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Sélecteur de personne"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Texte court"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Texte long"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Date"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Sélecteur de date"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Lien"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Compte externe"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronoms"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Erreur d'expression régulière inconnue"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Format d'URL invalide."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "Le groupe %(name)r dans le modèle d'URL n'est pas présent dans le motif de l'identificateur de lien."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Le groupe %(name)r dans le modèle de lien n'est pas présent dans le modèle d'URL."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoji unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji personnalisé"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoji spécial Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Caractères invalides dans le nom de l'emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Caractères invalides dans la langue des pygments"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "événements de canal"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Disponible sur Zulip Cloud Standard. Mettre à niveau pour accéder."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "Intégration GIPHY désactivée"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Autoriser les GIF classés Y (Public très jeune)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "Autoriser les GIF classés G (Public général)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "Autoriser les GIF classés PG (Conseil parental)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "Autoriser les GIF classés PG-13 (Conseil parental - moins de 13 ans)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "Autoriser les GIF classés R (Restreint)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Public sur le Web"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Publique"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Privé, historique protégé"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Privé, historique protégé"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Public, historique protégé"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Tous les abonnés du canal peuvent envoyer des messages"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Seuls les administrateurs de l'organisation peuvent envoyer des messages"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Seuls les administrateurs de l'organisation et les modérateurs peuvent envoyer des messages"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Seuls les membres complets peuvent envoyer des messages"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Administrateurs, modérateurs, membres et invités"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Administrateurs, modérateurs et membres"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Administrateurs et modérateurs"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Seulement les administrateurs"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Personne"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Administrateur de l'organisation"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administrateur de l'organisation"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Modérateur"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Membre"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Invité"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Adresse IP inconnue"
@@ -5166,20 +5723,20 @@ msgstr "un système d'exploitation inconnu"
 msgid "An unknown browser"
 msgstr "Un navigateur inconnu"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Argument 'queue_id' manquant"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Argument 'last_event_id' manquant"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Un événement plus récent que {event_id} a déjà été nettoyé !"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "L'événement {event_id} introuvable dans cette file d'attente"
@@ -5217,41 +5774,41 @@ msgstr "Le mot de passe est incorrect."
 msgid "User-Agent header missing from request"
 msgstr "En-tête User-Agent absent de la requête"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "L'étiquette ne peut pas être vide."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Les champs doivent avoir au moins un choix disponible."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Type de champ non pris en charge pour l'affichage dans le résumé du profil."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Type de champ invalide."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Seuls 2 champs de profil personnalisés peuvent être affichés dans le résumé du profil."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Un champ avec cette étiquette existe déjà."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Le champ personnalisé par défaut ne peut être modifié."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Point final non disponible en production."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend n'est pas activé."
 
@@ -5302,7 +5859,7 @@ msgstr "Vous devez spécifier au moins une adresse courriel."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "Le canal n'existe pas avec l'id : {stream_id}. Aucune invitation n'a été envoyée."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "Vous n'avez pas la permission d'abonner d'autres utilisateurs aux flux."
 
@@ -5351,19 +5908,19 @@ msgstr "L'ancre ne peut être exclue qu'à une extrémité de la plage"
 msgid "No such topic '{topic}'"
 msgstr "Aucun sujet tel que '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Expéditeur manquant"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Mise en mirror non autorisée avec un ID utilisateur de destinataire"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Message mirroir non valide"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Le mirroir Zephyr n'est pas autorisé dans cette organisation."
 
@@ -5379,42 +5936,46 @@ msgstr "Cet utilisateur est déjà muet"
 msgid "User is not muted"
 msgstr "Cet utilisateur n'est pas muet"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "La présence n'est pas supportée pour les utilisateurs robots."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Pas de données de présence pour {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Le client n'a envoyé aucune nouvelle valeur."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Le client doit transmettre emoji_name s'il transmet emoji_code ou reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "Statut non valide : {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "ID d'application non valide"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Jeton vide ou de taille non valide"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Jeton APNS non valide"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "Erreur retournée par le bouncer : {result}"
@@ -5429,55 +5990,55 @@ msgstr "Au moins un des arguments suivants doit être présent : emoji_nam, emoj
 msgid "Read receipts are disabled in this organization."
 msgstr "Les confirmations de lecture sont désactivées dans cette organisation."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Langage non valide '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Au moins une méthode d'authentification doit être activée."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "video_chat_provider non valide {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "giphy_rating non valide {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Doit être une organisation de démonstration."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "Domaine non valide : {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Le domaine {domain} fait déjà partie de votre organisation."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Aucune entrée trouvée pour le domaine {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Vous devez envoyer exactement un fichier."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Seulement les administrateurs peuvent surpasser les emojis par défaut."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "La taille du fichier envoyé est plus grande que la limite autorisée de {max_size} MiB"
@@ -5511,7 +6072,7 @@ msgstr "Export toujours en cours"
 msgid "You must upload exactly one icon."
 msgstr "Vous devez envoyer exactement une icône."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Transformation en lien introuvable."
 
@@ -5539,71 +6100,71 @@ msgstr "Format de requête non valide"
 msgid "Invalid DSN"
 msgstr "DSN non valide"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Les canaux privés ne peuvent pas être définis comme options de défaut."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Vous devez fournir \"new_description\" ou \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Valeur non valide pour \"op\". Spécifier soit \"add\" ou \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Le canal a déjà ce nom !"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Rien à faire. Spécifiez au moins un \"ajouter\" ou \"supprimer\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} vous a abonné au canal {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} vous a abonné aux canaux suivants :"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Impossible d'accéder au canal ({stream_name})"
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Vous pouvez inviter d'autres utilisateurs du mirroir Zephyr uniquement dans des canaux privés."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} a créé les nouveaux canaux : {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} a créé un nouveau canal {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "nouveaux canaux"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** canal créé par {user_name}. *Description:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "Propriété d'abonnement inconnue : {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "Non abonné au canal ID {stream_id}"
@@ -5612,7 +6173,7 @@ msgstr "Non abonné au canal ID {stream_id}"
 msgid "Invalid json for submessage"
 msgstr "JSON du sous-message non valide"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Vous n'êtes pas autorisé à visualiser ce fichier.
"
 
@@ -5636,112 +6197,112 @@ msgstr "Liste 'to' est vide"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "L'utilisateur a désactivé les notifications de frappe pour les messages directs"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Jeton non valide"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Nom de fichier non valide"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Vous devez spécifier un fichier à envoyer"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Vous ne pouvez envoyer qu'un seul fichier à la fois."
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Aucune nouvelle donnée fournie."
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} vous a ajouté au groupe {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} vous a retiré du groupe {group_name}."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "L'utilisateur {user_id} est déjà membre de ce groupe"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "Il n'y a aucun membre '{user_id}' dans ce groupe d'utilisateurs."
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Le groupe d'utilisateurs {group_id} est déjà un sous-groupe de ce groupe."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "Le groupe d'utilisateurs {user_group_id} est déjà un sous-groupe de l'un des sous-groupes transmis."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Le groupe d'utilisateurs {group_id} n'est pas un sous-groupe de ce groupe."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Cette organisation ne permet pas de modifier son avatar."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Le changement d'adresse courriel est désactivé dans votre organisation."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "default_language non valide"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "Son de notification non valide '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "Période d'envoi par courriel non valide : {seconds} secondes"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Votre mot de passe Zulip est géré dans l'annuaire LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Mot de passe incorrect !"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "Vous avez fait trop de tentatives ! Réessayez dans {seconds} secondes."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Le nouveau mot de passe est trop faible !"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Vous devez envoyer exactement un avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Ce sujet n'est pas muet."
 
@@ -5802,43 +6363,43 @@ msgstr "Les adresses courriel jetables ne sont pas autorisées dans cette organi
 msgid "Email '{email}' already in use"
 msgstr "Addresse de courriels '{email}' déjà utilisé"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Jeton d'accès Zoom non valide"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "L'identifiant Zoom n'a pas été configuré"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Identifiant de session Zoom non valide"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Identifiant Zoom non valide"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Impossible de créer la réunion Zoom"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton n'est pas configuré."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Signature non valide."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Erreur de connexion au serveur BigBlueButton."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Erreur d'authentification sur le serveur BigBlueButton."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Le serveur BigBlueButton a renvoyé une erreur inattendue."
 
@@ -5871,11 +6432,11 @@ msgstr "Charge utile non valide"
 msgid "Unknown webhook request"
 msgstr "Requête webhook inconnue"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Le sujet ne peut pas être vide"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Le contenu ne peut être vide"
 
@@ -5902,7 +6463,7 @@ msgstr "Le webhook newrelic nécessite que l'état soit dans [created|activa
 msgid "Events key is missing from payload"
 msgstr "La clé d'événements est absente de la charge utile"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Impossible de traiter la charge utile Pivotal"
 
@@ -5919,83 +6480,105 @@ msgstr "Message de Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "Action de webhook WordPress inconnue : {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "Votre exportation de données est terminée. [Voir et télécharger les exportations]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Sous-domaine non valide pour le serveur de relai des notifications push"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr " À valider avec une clé API valide de serveur Zulip"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID non valide"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Type de jeton invalide"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} n'est pas un nom d'hôte valide"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "ios_app_id manquant"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "User_id ou user_uuid manquant"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "Propriété non valide {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Les données sont hors d'ordre."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "Double enregistrement détecté."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "Données de journal d'audit malformées"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Vous devez réinitialiser votre mot de passe."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Paramètre id_token manquant"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP non valide"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Impossible d'utiliser mobile_flow_otp et desktop_flow_otp en en même temps."
diff --git a/locale/fr/translations.json b/locale/fr/translations.json
index fa0a2bce41..cc0e0439f3 100644
--- a/locale/fr/translations.json
+++ b/locale/fr/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(fichier joint)",
   "(forever)": "(pour toujours)",
   "(hidden)": "(caché)",
-  "(no description)": "(aucune description)",
   "(no topic)": "(pas de sujet)",
   "(or )": "",
   "(you)": "(vous)",
   "({message_retention_days} days)": "({message_retention_days} jours)",
   "/dark (Switch to the dark theme)": "/dark (Passer au thème sombre)",
   "/light (Switch to light theme)": "/light (Passer au thème clair)",
-  "/me is excited (Display action text)": "/me est enthousiaste (Afficher le texte de l'action)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Où aller déjeuner aujourd'hui ? (Créer un sondage)",
-  "/todo (Create a todo list)": "/todo (Créer une liste de tâches)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 journée",
   "1 hour": "1 heure",
   "1 week": "1 semaine",
@@ -28,7 +27,7 @@
   "6 hours": "6 heures",
   "Total messages: {total_messages}": "Nombre total de messages: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} sera supprimé des messages où il a été partagé. Cette action ne peut pas être annulée.
",
-  "Stream will be announced in #{notifications_stream}.
": "Le canal sera annoncé dans  #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Vous recherchez des messages envoyés par plusieurs personnes, ce qui n'est pas possible.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Vous recherchez des messages appartenant à plusieurs canaux, ce qui n'est pas possible.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Vous recherchez des messages qui appartiennent à plusieurs sujets, ce qui n'est pas possible.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Activité inconnue",
   "Add": "Ajouter",
   "Add GIF": "Ajouter un GIF",
+  "Add a description": "",
   "Add a new alert word": "Ajouter un nouveau mot d'alerte",
   "Add a new bot": "Ajouter un nouveau robot",
   "Add a new code playground": "Ajouter un nouveau terrain de jeu de code",
@@ -207,6 +207,7 @@
   "Bot": "Robot",
   "Bot email": "Adresse courriel du robot",
   "Bot email (a-z, 0-9, and dashes only)": "Adresse courriel du robot (a-z, 0-9 et tirets uniquement)",
+  "Bot is deactivated": "",
   "Bot owner": "Propriétaire du robot",
   "Bot type": "Type de robot",
   "Bots": "Robots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Fermer cette fenêtre de dialogue",
   "Code": "Code",
   "Code playgrounds": "Bacs à sable",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Les terrains de jeu de code sont des environnements de développement interactifs dans le navigateur, tels que replit, qui sont conçus pour faciliter l'édition et le débogage du code. Les blocs de code Zulip qui sont étiquetés avec un langage de programmation auront un bouton visible au survol qui permet aux utilisateurs d'ouvrir le bloc de code sur le site de l'aire de jeux de code.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Réduire la boîte de rédaction",
   "Collapse direct messages": "Réduire les messages directs",
   "Collapse message": "Réduire le message",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configurer les méthodes d'authentification pour votre organisation.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configurez les canaux par défaut auxquels les nouveaux utilisateurs sont abonnés lors de l'inscription à votre organisation.",
   "Confirm": "Confirmer",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Considérez une recherche de tous les canaux publics .",
   "Contact a moderator to resolve this topic.": "Contactez un modérateur pour marquer ce sujet comme résolu",
   "Contact a moderator to unresolve this topic.": "Contactez un modérateur pour marquer ce sujet comme non résolu",
@@ -292,6 +294,7 @@
   "Copy code": "Copier le code",
   "Copy link": "Copier le lien",
   "Copy link to message": "Copier le lien de ce message",
+  "Copy link to profile": "",
   "Copy link to topic": "Copier le lien vers ce sujet",
   "Copy mention syntax": "Copier la syntaxe de la mention",
   "Copy version": "Copier la version",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Supprimer tous les brouillons",
   "Delete all selected drafts": "",
   "Delete code playground?": "Supprimer le code bac à sable?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Supprimer le champ de profil personnalisé ?",
   "Delete data export?": "Supprimer l'exportation de données ?",
   "Delete draft": "Supprimer le brouillon",
@@ -413,7 +417,6 @@
   "Domain": "Domaine",
   "Don’t allow disposable email addresses": "Interdire les adresses courriel jetables",
   "Download": "Télécharger",
-  "Download .zuliprc": "Télécharger .zuliprc",
   "Download botserverrc": "Télécharger botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Télécharger la configuration de tous les robots de webhooks sortants actifs dans le format Botserver de Zulip.",
   "Download file": "Télécharger le fichier",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Éducation (à but lucratif)",
   "Education (non-profit)": "Éducation (à but non lucratif)",
   "Effect": "Effet",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Courriel",
   "Email address": "Adresse courriel",
   "Email address changes are disabled in this organization.": "Le changement d'adresse courriel est désactivé dans votre organisation.",
@@ -550,7 +554,7 @@
   "Follow": "Suivre",
   "Followed": "Suivi",
   "Followed topics": "Sujets suivis",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Par exemple, pour configurer un terrain de jeu de code pour les blocs de code étiquetés comme Python, vous pouvez définir :",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Pour plus d'exemples et de détails techniques, voir la documentation du centre d'aide sur l'ajout de terrains de jeu de code.",
   "For more examples, see the help center documentation on adding linkifiers.": "Pour plus d'exemples, voir la documentation du centre d'aide sur l'ajout de linkifiers.",
   "Forgot it?": "Oublié ?",
@@ -606,6 +610,8 @@
   "Image": "Image",
   "In a meeting": "En réunion",
   "In muted streams, stream notification settings apply only to unmuted topics.": "Dans les canaux muets, les paramètres de notification du canal ne s'appliquent qu'aux sujets non mis en sourdine.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inactif",
   "Inactive bots": "Robots inactifs",
   "Inbox": "Boîte de réception",
@@ -704,9 +710,11 @@
   "Manage this bot": "Gérer ce robot",
   "Manage this user": "Gérer cet utilisateur",
   "Manage user": "Gérer l'utilisateur",
+  "Manage your API key": "",
   "March": "Mars",
   "Mark all messages as read": "Marquer tous les messages comme lus",
   "Mark all messages as read?": "Marquer tous les messages comme lus ?",
+  "Mark all messages as unread": "",
   "Mark as read": "Marquer comme lu",
   "Mark as resolved": "Marquer comme résolu",
   "Mark as unread from here": "Marquer comme non lu à partir d'ici",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mentionné dans",
   "Mentions": "Mentions",
   "Menus": "Menus",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Message #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Message #{stream_name} > {topic_name}",
   "Message actions": "Options du message",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Message {recipient_label}",
   "Message {recipient_names}": "Message {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Message {recipient_name} ({recipient_status})",
+  "Messages": "Messages",
   "Messages in all public streams": "Messages dans tous les canaux publics",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "N'expire jamais",
   "New": "Nouveau",
   "New direct message": "Nouveau message direct",
+  "New direct message from {sender_full_name}": "",
   "New email": "Nouveau courriel",
   "New message": "Nouveau message",
   "New option": "Nouvelle option",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Message direct non lu suivant",
   "Next unread followed topic": "",
   "Next unread topic": "Suivant sujet non lu",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Aucun robot ne correspond à votre filtre.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Aucune description.",
   "No drafts selected": "",
   "No drafts.": "Aucun brouillon.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Aucune invitation ne correspond à votre filtre.",
   "No language set": "Aucune langue paramétrée",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Aucune transformation en lien paramétrée",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Aucun utilisateur correspondant.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Aucun sujet n'est marqué comme résolu.",
   "No topics match your current filter.": "Aucun sujet ne correspond à votre filtre actuel.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Aucun abonnement de groupe d'utilisateurs.",
   "No user groups": "Pas de groupes d'utilisateurs",
   "No user to subscribe.": "Aucun utilisateur à abonner.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Personne au sein de l'organisation Zulip ne pourra voir cette adresse e-mail.",
   "Non-profit (registered)": "Organisation à but non lucratif (enregistrée)",
   "None": "Aucun",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Notez que tous les robots que vous maintenez seront désactivés.\n",
   "Note that organizations are limited to five exports per week.": "Notez que les organisations sont limitées à cinq exportations par semaine.",
   "Nothing to preview": "Rien à prévisualiser",
@@ -932,6 +940,7 @@
   "Other permissions": "Autres permissions",
   "Other settings": "Autres paramètres",
   "Other users in this Zulip organization will be able to see this email address.": "D'autres utilisateurs de cette organisation Zulip pourront voir cette adresse e-mail.",
+  "Others": "",
   "Out sick": "En congé maladie",
   "Outgoing webhook message format": "Format du message du webhook sortant",
   "Override default emoji?": "Remplacer l'emoji par défaut ?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Rendre obligatoire un sujet pour les messages des canaux",
   "Research": "Recherche",
   "Resend": "Renvoyer",
-  "Resend invitation": "Renvoyer l'invitation",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Le renvoi a rencontré une erreur. Recharger l'application et réessayer.",
+  "Reset to default notifications": "",
   "Reset zoom": "Réinitialiser le zoom",
   "Restore draft": "Restaurer le brouillon",
   "Restrict email domains of new users?": "Restreindre le domaine des adresses courriel pour les nouveaux utilisateurs ?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Effectuer une recherche de  dans le sujet ou le contenu du message.",
   "Search people": "Rechercher des personnes",
   "Search results": "Résultats de la recherche",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Voir comment configurer l'email.",
   "Select a stream": "Choisir un canal",
   "Select a stream below or change topic name.": "Sélectionner un canal ci-dessous ou modifier le nom du sujet.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Afficher le nombre de messages favoris",
   "Show status text": "Afficher le texte d'état",
   "Show unread counts for": "",
-  "Show/change your API key": "Montrer/changer votre clé API",
   "Showing messages since {time_string}.": "",
   "Sign up": "S'inscrire",
   "Silent mentions do not trigger notifications.": "Les mentions silencieuses ne déclenchent pas de notifications.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "L'adresse courriel de l'expéditeur",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "Le canal #{stream_name} n'existe pas. Gérez vos abonnements sur votre page Canaux.",
   "The stream description cannot contain newline characters.": "La description du canal ne peut pas contenir de retour à la ligne.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Leur mot de passe sera effacé de nos systèmes et tous les robots qu'ils maintiennent seront désactivés.",
   "Theme": "Thème",
+  "There are no bots.": "",
   "There are no current alert words.": "Il n'y a pas de mots d'alerte actuellement.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Il n'y a pas de message ici.",
   "There are no streams you can view in this organization.": "Il n'y a pas de canal que vous pouvez visualiser dans cette organisation.",
   "There are no unread messages in your inbox.": "Il n'y a pas de messages non lus dans votre boîte de réception.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Ce robot ne peut pas être désactivé.",
   "This bot cannot be edited.": "Ce robot ne peut pas être modifié.",
   "This bot has been deactivated.": "Ce bot a été désactivé.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Cela effacera le champ de profil pour utilisateurs.",
   "This will delete the  profile field for 1 user.": "Cela supprimera le champ de profil pour 1 utilisateur.",
   "This will delete the  profile field for  users.": "Cela supprimera le champ de profil pour utilisateurs.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Jeudi",
   "Time": "Heure",
   "Time format": "Format de l'heure",
@@ -1240,6 +1259,7 @@
   "Today": "Aujourd'hui",
   "Today at {time}": "Aujourd'hui à {time}",
   "Toggle first emoji reaction on selected message": "Basculer la première réaction emoji sur le message sélectionné",
+  "Toggle preview mode": "",
   "Toggle subscription": "Changer l'abonnement",
   "Toggle the gear menu": "Réduire le menu latéral",
   "Toggle topic mute": "Rendre le sujet muet / non muet",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "Vous n'avez pas la permission d'ajouter des autres utilisateurs à ce canal",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Vous n'avez pas l'autorisation de déplacer certains messages de ce sujet. Contactez un modérateur pour déplacer tous les messages.",
   "You do not have permission to post in this stream.": "Vous n'êtes pas autorisé à publier dans ce canal.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "Vous n'avez pas la permission de marquer comme résolus les sujets avec des messages plus anciens que {N, plural, one {# day} other {# days}} dans cette organisation.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Serveur Zulip {display_version}",
   "Zulip Server {display_version} (modified)": "Serveur Zulip {display_version} (modifié)",
   "Zulip Server {display_version} (patched)": "Serveur Zulip {display_version} (correctif)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Zulip vous permet de mettre en sourdine des sujets et des canaux afin d'éviter de recevoir des messages de notification qui ne vous intéressent pas. La mise en sourdine d'un canal entraîne la mise en sourdine de tous les sujets de ce canal Vous pouvez également couper manuellement le son d'un sujet dans un canal non mis en sourdine ou rétablir le son d'un sujet dans un flux coupé. En savoir plus.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip doit envoyer un courriel pour valider les adresses des utilisateurs et leur envoyer des notifications.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip a besoin de votre permission pour activer les notifications de bureau.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Les traductions de Zulip sont élaborées par notre fantasique communauté de traducteurs bénévoles. Si vous souhaitez contribuer, veuillez vous référer au document Zulip translation guidelines.",
@@ -1541,6 +1561,9 @@
   "more topics": "plus de sujets",
   "she/her": "elle/elle",
   "they/them": "iel/ellui",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Terminé ! {N} message marqué comme lu.} many {Terminé ! {N} messages marqués comme lus.} other {Terminé ! {N} messages marqués comme lus.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Terminé ! {N} message marqué comme non lu.} many {Terminé ! {N} messages marqués comme non lus.} other {Terminé ! {N} messages marqués comme non lus.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} many {} other {}}",
diff --git a/locale/gl/LC_MESSAGES/django.po b/locale/gl/LC_MESSAGES/django.po
index 00e2025989..51c1ea81cf 100644
--- a/locale/gl/LC_MESSAGES/django.po
+++ b/locale/gl/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -18,56 +18,50 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -76,7 +70,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -84,7 +78,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than one user to join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -92,7 +86,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than two users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -100,7 +94,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than three users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -109,11 +103,11 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -129,124 +123,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this "
 "page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -256,54 +250,61 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -313,8 +314,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -425,7 +463,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr ""
 
@@ -567,36 +605,138 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr ""
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -618,6 +758,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -637,11 +1222,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -656,12 +1237,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -694,103 +1275,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -806,14 +1332,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -862,7 +1380,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
@@ -895,8 +1413,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr ""
 
@@ -930,26 +1448,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1181,21 +1695,21 @@ msgstr ""
 msgid "Normal users"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2452,7 +2966,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2465,12 +2989,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr ""
 
@@ -2502,7 +3026,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2869,12 +3393,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2883,11 +3403,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -3060,6 +3575,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3223,125 +3756,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3371,72 +3886,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3455,136 +3970,141 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3594,38 +4114,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3640,7 +4160,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3650,187 +4170,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3887,88 +4407,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3976,166 +4496,166 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4233,106 +4753,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4340,119 +4860,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4466,45 +4986,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4516,23 +5036,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4552,21 +5072,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4603,7 +5123,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4617,7 +5137,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4626,7 +5146,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4658,28 +5178,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4690,18 +5210,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4711,24 +5231,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4738,8 +5258,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4758,21 +5278,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4829,161 +5349,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5017,215 +5537,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4983
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4987
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5027
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5048
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5053
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5238,20 +5754,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5289,41 +5805,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5374,7 +5890,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5423,19 +5939,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5451,42 +5967,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5501,55 +6021,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5583,7 +6103,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5611,71 +6131,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5684,7 +6204,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5708,112 +6228,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5874,43 +6394,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5943,11 +6463,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5974,7 +6494,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5991,83 +6511,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/gl/translations.json b/locale/gl/translations.json
index 21d2ddb148..a1b518e813 100644
--- a/locale/gl/translations.json
+++ b/locale/gl/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "",
+  "{N, plural, one {# participant} other {# participants}}": "",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "",
diff --git a/locale/hi/LC_MESSAGES/django.po b/locale/hi/LC_MESSAGES/django.po
index 0491f9e341..1b051a1930 100644
--- a/locale/hi/LC_MESSAGES/django.po
+++ b/locale/hi/LC_MESSAGES/django.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Aruna Maurya, 2022\n"
 "Language-Team: Hindi (http://app.transifex.com/zulip/zulip/language/hi/)\n"
@@ -24,57 +24,51 @@ msgstr ""
 "Language: hi\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "अतिथि उपयोगकर्ताओं के लिए अनुमति नहीं है"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "अमान्य संगठन"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "सार्वजनिक धाराएँ"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "सार्वजनिक धाराएँ"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "कोई विश्लेषण डेटा उपलब्ध नहीं है। कृपया अपने सर्वर व्यवस्थापक से संपर्क करें।"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "अमान्य मापदण्ड"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -83,7 +77,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -92,7 +86,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -101,7 +95,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -110,7 +104,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -119,11 +113,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "इस संगठन के लिए सभी ज़ूलिप लाइसेंस वर्तमान में उपयोग में हैं।"
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -139,124 +133,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "अज्ञात भुगतान विधि। कृपया {email} से संपर्क करें।"
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "कुछ गलत हो गया। कृपया पृष्ठ को फिर से लोड करें।"
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "कुछ गलत हो गया। कृपया कुछ सेकंड प्रतीक्षा करें और पुनः प्रयास करें।"
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -264,54 +258,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "अमान्य मापदण्ड"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -320,8 +321,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -426,7 +460,7 @@ msgstr "15 दिन की गतिविधियाँ"
 msgid "Total users"
 msgstr "कुल उपयोगकर्ता"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "उपयोगकर्ता"
 
@@ -566,36 +600,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "बिलिंग"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "रद्द करना"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -617,6 +747,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -636,11 +1211,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -655,12 +1226,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -693,51 +1264,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -753,14 +1321,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -808,7 +1368,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "साइन अप करें"
 
@@ -841,8 +1401,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "लॉग इन करें"
 
@@ -875,26 +1435,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "अब कोशिश करो।"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "संदेश"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1117,21 +1673,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "सामान्य उपयोगकर्ता"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "बंद करे"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "अद्यतन करें"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2354,7 +2910,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2374,7 +2930,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2384,12 +2949,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "खाते ढूंढे"
 
@@ -2421,7 +2986,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2789,12 +3354,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2803,11 +3364,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2976,6 +3532,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3133,123 +3705,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "अमान्य ऑर्डर मैपिंग।"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "इस संगठन के लिए आमंत्रण भेजने के लिए आपका खाता बहुत नया है। एक संगठन व्यवस्थापक, या एक अधिक अनुभवी उपयोगकर्ता से पूछें।"
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "कुछ ईमेल मान्य नहीं हुए, इसलिए हमने कोई निमंत्रण नहीं भेजा।"
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "हम किसी को भी आमंत्रित करने में सक्षम नहीं थे।"
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3279,72 +3835,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3363,137 +3919,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3502,38 +4063,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3547,7 +4108,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3557,187 +4118,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "जिस संगठन को आप {email} के उपयोग से जोड़ने का प्रयास कर रहे हैं वह मौजूद नहीं है।"
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "कृपया संगठन व्यवस्थापक से {email} के लिए निमंत्रण का अनुरोध करें।"
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "आपका ईमेल पता, {email}, उन डोमेन में से एक नहीं है, जिन्हें इस संगठन में खातों के लिए पंजीकरण करने की अनुमति है।"
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "कुर्की हटाते समय एक त्रुटि हुई। बाद में पुन: प्रयास करें।"
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3794,88 +4355,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3883,119 +4444,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4003,47 +4564,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4141,106 +4702,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4249,119 +4810,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4375,45 +4936,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4425,23 +4986,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4461,21 +5022,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4512,7 +5073,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4526,7 +5087,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4535,7 +5096,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4567,28 +5128,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4599,18 +5160,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4620,24 +5181,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4647,8 +5208,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4667,21 +5228,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4738,161 +5299,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4926,215 +5487,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "सार्वजनिक"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "सार्वजनिक"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5147,20 +5704,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5198,41 +5755,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5283,7 +5840,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5332,19 +5889,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5360,42 +5917,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5410,55 +5971,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5492,7 +6053,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5520,71 +6081,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5593,7 +6154,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5617,112 +6178,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "इस संगठन में ईमेल पता परिवर्तन अक्षम हैं।"
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "आपका Zulip पासवर्ड LDAP में प्रबंधित है"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5783,43 +6344,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5852,11 +6413,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5883,7 +6444,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5900,83 +6461,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "अमान्य OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/hi/translations.json b/locale/hi/translations.json
index f146c5e2d7..82c2ce111c 100644
--- a/locale/hi/translations.json
+++ b/locale/hi/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(सदैव)",
   "(hidden)": "(छिपा हुआ)",
-  "(no description)": "(कोई विवरण नहीं)",
   "(no topic)": "",
   "(or )": "",
   "(you)": "(आप)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "/पोल आज हम लंच के लिए कहाँ जाएं? (एक पोल बनाएं)",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 दिन",
   "1 hour": "1 घंटा",
   "1 week": "1 सप्ताह",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "आप ऐसे संदेशों की खोज कर रहे हैं जो एक से अधिक व्यक्ति द्वारा भेजे जाते हैं, जो संभव नहीं है।
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "जोड़ना",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "बॉट",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "डाउनलोड फाइल",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "ईमेल",
   "Email address": "",
   "Email address changes are disabled in this organization.": "इस संगठन में ईमेल पता परिवर्तन अक्षम हैं।",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "पढ़े हुए का चिह्न",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "में वर्णित",
   "Mentions": "उल्लेख",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "संदेश क्रिया",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "संदेश",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "नया संदेश",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "अगला अपठित विषय",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "लोगों की खोज",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "साइन अप करें",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "विषय म्यूट टॉगल करें",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/hu/LC_MESSAGES/django.po b/locale/hu/LC_MESSAGES/django.po
index fcd6e8963d..48076c007d 100644
--- a/locale/hu/LC_MESSAGES/django.po
+++ b/locale/hu/LC_MESSAGES/django.po
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Eekain, 2021-2022\n"
 "Language-Team: Hungarian (http://app.transifex.com/zulip/zulip/language/hu/)\n"
@@ -26,57 +26,51 @@ msgstr ""
 "Language: hu\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Vendég felhasználóknak nem engedélyezett"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Hibás szervezet"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Nyilvános üzenetfolyamok"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Privát üzenetfolyamok"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "A kezdés ideje a befejezési idő utánra esik. Kezdés: {start}, befejezés: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Nincs elemzési adat. Lépj kapcsolatba a szerver adminisztrátorával!"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Érvénytelen paraméterek"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -85,7 +79,7 @@ msgid ""
 "users to join."
 msgstr "A szerveződéseteknek már semennyi Zulip licensze sem maradt. Kérjük [növeld a licenszeid számát]({billing_page_link}) vagy [deaktiválj passzív felhasználókat]({deactivate_user_help_page_link}), hogy tudjatok új tagokat hívni."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -94,7 +88,7 @@ msgid ""
 "join."
 msgstr "A szerveződéseteknek már csak egy Zulip licensze maradt. Kérjük [növeld a licenszeid számát]({billing_page_link}) vagy [deaktiválj passzív felhasználókat]({deactivate_user_help_page_link}), hogy egynél több tagot is meghívhassatok."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -103,7 +97,7 @@ msgid ""
 "join."
 msgstr "A szerveződéseteknek már csak kettő Zulip licensze maradt. Kérjük [növeld a licenszeid számát]({billing_page_link}) vagy [deaktiválj passzív felhasználókat]({deactivate_user_help_page_link}), hogy kettőnél több tagot is meghívhassatok."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -112,7 +106,7 @@ msgid ""
 "join."
 msgstr "A szerveződéseteknek már csak három Zulip licensze maradt. Kérjük [növeld a licenszeid számát]({billing_page_link}) vagy [deaktiválj passzív felhasználókat]({deactivate_user_help_page_link}), hogy háromnál több tagot is meghívhassatok."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -121,11 +115,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Egy új felhasználó ({email}) nem tudott csatlakozni a szerveződésedhez, mert minden Zulip licenszetek ki lett osztva. Kérjük [növeld a licenszeid számát]({billing_page_link}) vagy [deaktiválj passzív felhasználókat]({deactivate_user_help_page_link}), hogy az új tag csatlakozhasson."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Minden Zulip licensz erre a szerveződésre már használt."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -141,124 +135,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} végződése {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Ismeretlen fizetési mód. Kérjük, lépjen kapcsolatba a következővel: {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Valami elromlott. Kérjük, lépjen kapcsolatba a következővel: {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Valami gond van. Töltsd újra az oldalt!"
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Valami gond van. Várj pár másodpercet és próbáld újra."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Szerződésmódosítás nem lehetséges. A szerződés lejárt, vagy új szerződés köttetett."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Szerződésmódosítás nem lehetséges. A szerződés lejárt."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Nem tudsz manuálisan változtatni a lincenszek számán. A szerződésed automatikus licensz-osztásra szól."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "A szerződésed szerint már {licenses} licensz érhető el a jelen számlázási időszakban."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Ebben a számlázási időszakban már nem csökkentheted licenszeid számát."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "A szerződésed már ütemezetten átáll {licenses_at_next_renewal} licenszre."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Nincs változtatnivaló."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Ennél a szervezetnél nincs felhasználó!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Böngészési folyamat nem található"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Számlázási adminisztrátornak vagy a szervezet tulajdonosának kell lenned"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Fizetési szándék nem található"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Írd be a stripe_session_id vagy stripe_payment_intent_id változót"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -266,54 +260,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Érvénytelen paraméterek"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Hiba"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -322,8 +323,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Belső kiszolgáló hiba."
 
@@ -428,7 +462,7 @@ msgstr "15 napi aktivitás"
 msgid "Total users"
 msgstr "Összes felhasználó"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Felhasználók"
 
@@ -568,36 +602,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Győződj meg róla, hogy helyesen másoltad be a linket a böngészőbe. Ha újra ez az oldal jelenik meg, valószínűleg a mi hibánk. Sajnáljuk."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Számlázás"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Felhatalmazások bezárása"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Mégse"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Megerősít"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "A díjkorlát túllépve."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Próbálkozz újra %(retry_after)s másodperccel később."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -619,6 +749,451 @@ msgstr "Kategóriák"
 msgid "All"
 msgstr "Mindenki"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "A Zulip fejlesztési közösség"
@@ -638,11 +1213,7 @@ msgstr "Csatlakozz, mint szerver-gazda"
 msgid "Join as a contributor"
 msgstr "Csatlakozz, mint támogató"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -657,12 +1228,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Szervezet létrehozása"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -695,51 +1266,48 @@ msgstr "Oktatási áraink"
 msgid "View pricing"
 msgstr "Áraink"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip üzleti használatra"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Kapcsolatfelvétel az ügyfélszolgálattal"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Küldő"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Szervezet"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Tárgy"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Üzenet"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Küld"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -755,14 +1323,6 @@ msgstr "Profilkép"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -810,7 +1370,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Feliratkozás"
 
@@ -843,8 +1403,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Bejelentkezés"
 
@@ -877,26 +1437,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Nem sikerült a Zuliphoz csatlakozni."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "A frissítések lehet, késnek."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Újrapróbálkozás..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Most próbáld!"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Üzenetek"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1119,21 +1675,21 @@ msgstr "Vendég felhasználók"
 msgid "Normal users"
 msgstr "Normál felhasználók"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Bezár"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Frissítés"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2356,7 +2912,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2376,7 +2932,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2386,12 +2951,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "E-mail cím"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Fiókok keresése"
 
@@ -2423,7 +2988,7 @@ msgstr "Integrációk"
 msgid "Desktop & mobile apps"
 msgstr "Asztali és mobil alkalmazások"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Új szervezet"
 
@@ -2791,25 +3356,16 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "A díjkorlát túllépve."
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "Többször próbáltad ezt tenni\n                        mint ami felhasználónak, mint olyannak engedve van."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Próbálkozz újra %(retry_after)s másodperccel később."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2978,6 +3534,22 @@ msgstr "Mi iránt érdeklődsz?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Feliratkoznék a Zulip ritkásan érkező hírlevelére (évente pár e-mail)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Jelszó visszaállítása"
@@ -3135,123 +3707,107 @@ msgid ""
 "                        "
 msgstr "\n                        Ezenkívül használhatod még a Zulip asztali alkalmazást is."
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "feliratkozás"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} épp most regisztrált a Zulip szolgáltatásba. (összesen: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} elfogadta a Zulip meghívódat!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Érvénytelen sorrend megfeleltetés."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Mező id {id} nem található."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "A/az '{stream_name}' egy alapértelmezett üzenetfolyam, és nem adható hozzá a/az '{group_name}' csoporthoz"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "A '{group_name}' alapértelmezett üzenetfolyam-csoport már létezik"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "A folyam '{stream_name}' már az alapértelmezett folyami csoport '{group_name}' része"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "A folyam '{stream_name}' nem része az alapértelmezett '{group_name}' folyami csoportnak"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "A felhasználók védelme érdekében a Zulip korlátozza az egy napon belül elküldhető meghívók számát. Mivel elérte a korlátot, nem küldtünk ki meghívót."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "A fiókod túl új ahhoz, hogy meghívókat küldhess ehhez a szervezethez. Kérj meg egy szervezeti adminisztrátort vagy egy tapasztaltabb felhasználót."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Néhány e-mail nem volt érvényes, ezért egy meghívót sem küldtünk ki."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Senki sem sikerült meghívnunk."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3281,72 +3837,72 @@ msgstr "Az üzenetfolyam változtatása közben az üzenetszöveg nem módosíth
 msgid "Widgets cannot be edited."
 msgstr "A widgetek nem szerkeszthetőek."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "A szervezetben az üzenetek szerkesztésének lehetősége ki van kapcsolva."
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Nincs jogosultságod az üzenet szerkesztésére"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Az üzenet módosítására rendelkezésre álló időkorlát letelt."
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} lezárta ezt a témát."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} lezáratlannak jelölte ezt a témát."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "A szervezetben az üzenetek szerkesztésének lehetősége ki van kapcsolva."
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Nincs jogosultságod az üzenet szerkesztésére"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Az üzenet módosítására rendelkezésre álló időkorlát letelt."
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Nincs engedélyed ennek az üzenetnek a mozgatásához"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3365,137 +3921,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Érvénytelen üzenet(ek)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Az üzenet megjelenítése nem sikerült"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Csak egy üzenetfolyamra van szükség"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Érvénytelen adattípus az üzenetfolyam számára"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Érvénytelen adattípus a címzettek számára"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "A címzettek listája vagy e-maileket, vagy felhasználói azonosítókat tartalmazhat, de ezek nem vegyíthetőek."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "A/az {bot_identity} robot megpróbált üzenetet küldeni a/az {stream_id} üzenetfolyam ID-vel, de ilyen azonosítójú üzenetfolyam nem létezik."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "A/az {bot_identity} robot megpróbált üzenetet küldeni a/az {stream_name} üzenetfolyamba, de az nem létezik. Kattints [ide] ({new_stream_link}) a létrehozásához."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "A/az {bot_identity} robot megpróbált üzenetet küldeni a/az {stream_name} üzenetfolyamba. Az üzenetfolyam létezik, de nincsenek feliratkozói."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgetek: az API programozó érvénytelen JSON tartalmat küldött"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgetek: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Ilyen nevű egyedi hangulatjel már létezik."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3504,38 +4065,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} átnevezte a/az {old_stream_name} üzenetfolyamot erre: {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Nincs leírás."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Régi leírás"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Új leírás"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Örökre"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Ebben az üzenetfolyamban az üzeneteket örökre megőrizzük mostantól."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3549,7 +4110,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr "Nem csatolhatsz alüzenetet ezen üzenethez."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3559,187 +4120,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Ez az API nem érhető el bejövő webhook robotok számára."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "A fiók nincs ehhez az aldomainhez rendelve."
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Ez a végpont nem fogad el robotoktól érkező kéréseket."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Szerver adminisztrátornak kell lenned"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Elégtelen jogosultság"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Ez a végpont HTTP basic authentikációt igényel."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Érvénytelen authorizációs fejléc basic authentikáció során"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Hiányzó authorizációs fejléc a basic auth során"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "A webhook robotok csak webhookokat érhetnek el"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "A jelszó túl gyenge."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Az aldomainnek legalább 3 karakter hosszúnak kell lennie."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Az aldomain nem kezdődhet kötőjellel."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Az aldomain nevében csak kisbetűk, számok és kötőjelek lehetnek."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "A valós e-mail címedet használd."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Nem létezik a szervezet, amibe a/az {email} címmel megpróbálsz belépni."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Kérjük igényelj egy invitációt a/az {email} címeddel a szervezet adminisztrátorától."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "A/az {email} email címed domain neve nincs azok között a domain nevek között, ahonnan engedélyezett a regisztráció ebbe a szervezetbe."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Ebben a szervezetben a + jelet tartalmazó email címek nem használhatóak."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Új tagok nem csatlakozhatnak ehhez a szerveződéshez, mert az összes Zulip lincenszük már használt. Kérjük, szólj a tagnak, aki meghívott, hogy növeljék a lincenszek számát, majd próbálkozz újra."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Új jelszó"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Új jelszó megerősítése"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "A jelszavad túl gyengének bizonyult, ezért zároltuk. Állítsd vissza a jelszavad, hogy egy újat beállíthass."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Maximum 10 e-mail címet adhatsz meg."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Nem találtuk meg ezt a Zulip szervezetet."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Hiányzó téma"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Nem küldheted több üzenetfolyamra"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Hiányzó üzenetfolyam"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Az üzenethez címzettnek is kell tartoznia"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Érvénytelen üzenettípus"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Érvénytelen csatolmány"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Hiba történt a csatolmány törlése közben. Próbáld újra később."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Az üzenethez tartoznia kell címzettnek!"
 
@@ -3796,88 +4357,88 @@ msgstr "A felhasználó letiltotta a piszkozatok összehangolását."
 msgid "Draft does not exist"
 msgstr "Piszkozat nem található"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Nyisd meg a Zulipot, hogy lásd a zárolt tartalmat"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Érvénytelen cím."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Kívül van a tartományodon."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "A + jeleket tartalmazó e-mail címek nem megengedettek."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Robotok részére fenntartva."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} már felhasználó"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Már van fiókja."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "A fiók letiltásra került."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Érvénytelen egyedi hangulatjel."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Érvénytelen egyedi hangulatjel név."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Ez az egyedi hangulatjel deaktiválásra került."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Érvénytelen hangulatjel kód."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Érvénytelen hangulatjel név."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Érvénytelen hangulatjel típus."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Ehhez szervezeti adminisztrátornak vagy emoji szerzőnek kell lenned"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "A hangulatjelnek nincs neve"
 
@@ -3885,119 +4446,119 @@ msgstr "A hangulatjelnek nincs neve"
 msgid "Could not allocate event queue"
 msgstr "Az esemény sor allokálása nem sikerült."
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Nem vagy bejelentkezve: API auth vagy felhasználói folyamat szükséges."
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Ez '{stream}' az üzenetfolyam nem létezik!"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "ID szerinti üzenetfolyam '{stream_id}' nem létezik"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "szervezet tulajdonosa"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "felhasználó"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Ez az egyetlen {entity}, ezért nem tiltható le."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Érvénytelen Markdown include statement: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Az API használat túllépte a limitet"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Hibás formátumú JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Szervezeti tagnak kell lenned"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Szervezeti adminisztrátornak kell lenned"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "A szervezet tulajdonosának kell lenned"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "A felhasználóneved vagy a jelszavad helytelen"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "A fiók letiltásra került"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Ez a szervezet letiltásra került."
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "A jelszavas belépés ennél a szerveződésnél nem elérhető"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "A jelszavad el lett tiltva, állítsd vissza"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Érvénytelen API kulcs"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Hibás formátumú API kulcs"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Érvénytelen subdomain"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Hozzáférés megtagadva"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4005,47 +4566,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Ez a reakció már létezik."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Ez a reakció nem létezik."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Az egyéni külső fióknak meg kell határoznia az URL-mintát"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Érvénytelen külső fiók típus"
 
@@ -4143,106 +4704,106 @@ msgstr "Hatékonyság"
 msgid "Version control"
 msgstr "Verziókezelés"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Az üzenet nem lehet üres"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Az üzenet nem tartalmazhat null byteokat."
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Érvénytelen postosító kifejezés: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Üres az 'anchor' mező."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Érvénytelen anchor"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Ha még nem ismeri a Zulipot, tekintse meg [Bevezető útmutatónkat] ({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Üdv, köszönt a Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Segíthetek szárnypróbálgatásaidban! Kattints erre az üzenetre, vagy nyomj egy 'r'-t, hogy válaszolj."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Ezt a pár üzenetet értettem:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4251,119 +4812,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Böngéssz az üzenetfolyamok között, és iratkozz fel rájuk] (#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Bármikor nyomjd meg a `?` gombot, hogy megnyiss egy [gyorsgomblistát](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Sajnálom, nem értettem az üzeneted. Kérjük, válassz az alábbi parancsok közül:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Ez privát üzenetfolyam, amit a folyam neve melletti lakat is jelez."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Privát üzenetfolyamokat csak a folyam tagjai tekinthetnek meg."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Eme folyam kezeléséhet menj az [Üzenetfolyam beállítása]({stream_settings_url}) lehetőségre, és kattints ide: `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Ez egy üzenet a #**{default_notification_stream_name}** streamen `téma demonstráció` témában."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "A Téma egy egyszerű eszköz, ami segít rendszerezni a beszélgetéseket."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Több információ a témákról elérhető a [Streameknél és témáknál]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Ez egy üzenet a #**{default_notification_stream_name}** streamen `swimming turtles` témában."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Érvénytelen JSON érkezett vissza"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Érvénytelen válasz format"
 
@@ -4377,45 +4938,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "A token nem létezik"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Ez a szervezet nem engedélyezte az üzenetek tartalmának megjelenítését a telefonos értesítésekben"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} megemlítette, hogy @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} kihívott téged:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} kihívott mindenkit:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4427,23 +4988,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Erre a lekérdezésre a felhasználó nem jogosult"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' már nem használja a Zulip-et."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4463,21 +5024,21 @@ msgstr "Hiányzó '{var_name}' érték"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Rossz érték megadva ennél '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Sérült payload"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4514,7 +5075,7 @@ msgstr "Kérjük válassz: 'stream' vagy 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4528,7 +5089,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4537,7 +5098,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Nyilvános webes üzenetfolyamok nem engedélyezettek."
 
@@ -4569,28 +5130,28 @@ msgstr "A téma nem lehet üres!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Ennél az üzenetfolyamnál nem érhetők el a feliratkozók adatai."
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Privát üzenetfolyamnál nem érhetők el a feliratkozók adatai."
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} nem boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} nem dátum"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} nem dict"
@@ -4601,18 +5162,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} nem float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} túl kicsi"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} nem integer"
@@ -4622,24 +5183,24 @@ msgstr "{var_name} nem integer"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} túl nagy"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} nem lista"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Érvénytelen {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} túl hosszú (korlátozva {max_length} karakter hosszúságban)"
@@ -4649,8 +5210,8 @@ msgstr "{var_name} túl hosszú (korlátozva {max_length} karakter hosszúságba
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} nem string"
@@ -4669,21 +5230,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "A feltöltéseddel a szervezeted túllépné a rendelkezésre álló keretét."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Kép dekódolása sikertelen; biztosan képet töltöttél fel?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "A kép mérete meghaladja a beállított korlátokat."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Az animáció sérült."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Ismeretlen animáció fájltípus."
 
@@ -4740,161 +5301,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "A név túl hosszú!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "A név túl rövid!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Érvénytelen karakter a névben!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Érvénytelen formátum!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "A név már használatban van!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Hibás név vagy felhasználói név"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Érvénytelen konfigurációs adat!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Érvénytelen robot típus"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Érvénytelen interfész típus"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Nincs ilyen robot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Nincs ilyen felhasználó"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "A felhasználó letiltásra került"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} nem lehet üres."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} hossza {length}, ami érvénytelen; {target_length} hosszúnak kellene lennie"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} nem érvényes hex color code"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} pontosan {length} dolgot tartalmazzon"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} kulcs hiányzik a {var_name} változóból"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} nem allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} hibás)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} nem URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' nem lehet üres."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' nem érvényes választási lehetőség '{field_name}' számára"
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} nem string vagy integer lista"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} nem string vagy integer"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} hiányzik"
@@ -4928,215 +5489,211 @@ msgstr "CSRF hiba: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "üzenetfolyam eseményei"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Érvénytelen karakter a hangulatjel nevében."
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Ismeretlen regex hiba"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Érvénytelen karakterek a pygments nyelvben"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Adminok, moderátorok, tagok és vendégek"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Adminok, moderátorok, és tagok"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Adminok és moderátorok"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Csak adminisztrátorok"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Senki"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Szervezet tulajdonosa"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Szervezet adminisztrátora"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderátor"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Tag"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Vendég"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Nyilvános a weben"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Nyilvános"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Privát, közös korábbi üzenetek"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Privát, védett korábbi üzenetek"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Minden tagja az üzenetfolyamnak posztolhat"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Csak a szervezeti adminisztrátorok üzenhetnek"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Csak szervezeti adminisztrátorok és moderátorok üzenhetnek"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Csak a szervezeti teljes jogú tagjai üzenhetnek"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode hangulatjel"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Egyedi hangulatjel"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip extra hangulatjel"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Opciók listája"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Személy kiválasztó"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Rövid szöveg"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Hosszú szöveg"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Dátum kiválasztó"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Külső fiók"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Ismeretlen regex hiba"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode hangulatjel"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Egyedi hangulatjel"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip extra hangulatjel"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Érvénytelen karakter a hangulatjel nevében."
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Érvénytelen karakterek a pygments nyelvben"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "üzenetfolyam eseményei"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Nyilvános a weben"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Nyilvános"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Privát, közös korábbi üzenetek"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Privát, védett korábbi üzenetek"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Minden tagja az üzenetfolyamnak posztolhat"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Csak a szervezeti adminisztrátorok üzenhetnek"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Csak szervezeti adminisztrátorok és moderátorok üzenhetnek"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Csak a szervezeti teljes jogú tagjai üzenhetnek"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Adminok, moderátorok, tagok és vendégek"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Adminok, moderátorok, és tagok"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Adminok és moderátorok"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Csak adminisztrátorok"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Senki"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Szervezet tulajdonosa"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Szervezet adminisztrátora"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderátor"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Tag"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Vendég"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Ismeretlen IP cím"
@@ -5149,20 +5706,20 @@ msgstr "egy ismeretlen operációs rendszer"
 msgid "An unknown browser"
 msgstr "Egy ismeretlen böngésző"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Hiányzó 'queue_id' paraméter"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Hiányzó 'last_event_id' paraméter"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Egy eseményt ami újabb, mint {event_id} már töröltek!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Az esemény {event_id} ebben a sorban nem található"
@@ -5200,41 +5757,41 @@ msgstr "Helytelen jelszó."
 msgid "User-Agent header missing from request"
 msgstr "User-Agent fejléc hiányzik a kérésből"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "A címke nem lehet üres."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "A mezőnek legalább egy választási lehetőséggel rendelkeznie kell."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Érvénytelen mezőtípus."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Ilyen címkével már létezik mező."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Alapértelmezett egyedi mező frissítése sikertelen."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Éles környezetben hozzáférhetetlen endpoint"
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend nincs engedélyezve."
 
@@ -5285,7 +5842,7 @@ msgstr "Legalább egy e-mail cím megadása kötelező."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5334,19 +5891,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Hiányzó küldő"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Tükrözés nem engedélyezett a címzett felhasználó azonosítókkal"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Érvénytelen tükrözött üzenet"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr tükrözés nem engedélyezett ebben a szervezetben."
 
@@ -5362,42 +5919,46 @@ msgstr "Némított felhasználó"
 msgid "User is not muted"
 msgstr "Felhasználó nincs lenémítva"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "A jelenlét nincs követve robotok esetén."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Jelenléti adat hiányzik {user_id_or_email} felhasználónál"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Az ügyfél nem adott meg semmi új értéket"
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Az ügyfél kénytelen lesz megadni egy emoji_name ha meghatároztak egy emoji_code vagy reaction_type -ot."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Üres vagy érvénytelen hosszúságú token"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Érvénytelen APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5412,55 +5973,55 @@ msgstr "Legalább egyet meg kell adni ezek közül: emoji_name, emoji_code"
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Valamilyen authentikációs lehetőséget meg kell adni."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Csak bemutató szerveződés lehet."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "A/az {domain} már része a szervezetednek."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Nem találtunk a {domain} domain-re példát."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Pontosan egy fájlt tölts fel."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5494,7 +6055,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Pontosan egy ikont tölts fel."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier nem található."
 
@@ -5522,71 +6083,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Privát üzenetfolyamok nem tehetőek alapértelmezetté."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "A \"new_description\" vagy a \"new_group_name\"-et kell átadnod."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Érvényelen érték az \"op\"-ban. Használd az \"add\" vagy \"remove\" értékeket."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Az üzenetfolyamnak már ez a neve!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nincs teendő meghatározva. Legalább az \"add\" vagy a \"delete\" megadása szükséges."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} behívott a folyamba {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} behívott a következő folyamokba:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Üzenetfolyam ({stream_name}) nem elérhető."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Zephy tükröző felhasználókat csak privát üzenetfolyamokba lehet meghívni."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} létrehozta a következő folyamokat: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} létrehozta a következő folyamot {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "új folyamok"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5595,7 +6156,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Érvénytelen json a submessage számára"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Nincs jogosultságod a fálj megtekintéséhez.
"
 
@@ -5619,112 +6180,112 @@ msgstr "Nincs címzett megadva"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Érvénytelen token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Érvénytelen fájlnév"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "A feltöltéshez egy állományt kell megadni"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Egyszerre csak egy állomány tölthető fel"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nincs megadva új adat"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "A felhasználó {user_id} már tagja e csoportnak"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "A profilkép változtatások ebben a szervezetben le vannak tiltva."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Az email cím változtatás ebben a szervezetben le van tiltva."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Érvénytelen default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "A Zulip jelszavad LDAP-ban kezelhető"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Hibás jelszó!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Az új jelszó túl gyenge!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Egyetlen avatar feltöltésére van szükség."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "A téma nincs lenémítva"
 
@@ -5785,43 +6346,43 @@ msgstr "Eldobható email címek használata ebben a szervezetben nem engedélyez
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Érvénytelen Zoom access token"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom jogosultsági beállítások hiányoznak"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Érvénytelen Zoom session identifier"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Érvénytelen Zoom jogosultságok"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Nem sikerült Zoom hívást kezdeményezni"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton nincs beállítva."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Érvénytelen aláírás."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Hiba történt a BigBlueButton szerverhez való csatlakozás közben."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Hiba történt a BigBlueButton szerver authentikációja során."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton szerver váratlan hibát jelentett."
 
@@ -5854,11 +6415,11 @@ msgstr "Érvénytelen payload adattartalom"
 msgid "Unknown webhook request"
 msgstr "Ismeretlen webhook kérés"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "A téma nem lehet üres."
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Tartalom nem maradhat üres"
 
@@ -5885,7 +6446,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Nem sikerült a Pivotal payload kezelése"
 
@@ -5902,83 +6463,105 @@ msgstr "Üzenj a  Slack által"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Érvénytelen aldomain a push értesítés bouncerhez"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Érvényesítsd a Zulip szervert érvényes API kulccsal"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Érvénytelen UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Érvénytelen token típus"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Váratlan adatrend."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Kérj új jelszót."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Hiányzó id_token paraméter"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Érvénytelen OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Egyszerre nem használható a mobile_flow_otp és a desktop_flow_otp."
diff --git a/locale/hu/translations.json b/locale/hu/translations.json
index 3d0f43c2ad..5263811806 100644
--- a/locale/hu/translations.json
+++ b/locale/hu/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(mindig)",
   "(hidden)": "(rejtett)",
-  "(no description)": "(nincs leírás)",
   "(no topic)": "(nincs téma)",
   "(or )": "",
   "(you)": "(te)",
   "({message_retention_days} days)": "({message_retention_days} nap)",
   "/dark (Switch to the dark theme)": "/dark (Válts sötét hangulatra)",
   "/light (Switch to light theme)": "/light (Válts világos hangulatra)",
-  "/me is excited (Display action text)": "/me izgatott vagyok (tevékenység megjelenítése)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Hová menjünk ma ebédelni? (szavazás készítése)",
-  "/todo (Create a todo list)": "/todo (teendők lista készítése)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 nap",
   "1 hour": "1 óra",
   "1 week": "1 hét",
@@ -28,7 +27,7 @@
   "6 hours": "6 óra",
   "Total messages: {total_messages}": "Összes üzenet: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "Az üzenetfolyam a/az #{notifications_stream} értesítések között lesz bejelentve.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Olyan üzenetre keresel, amit egynél több személy küldött, ilyen nem lehetséges.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Olyan üzenetre keresel, ami egynél több üzenetfolyamhoz tartozik, ilyen nem lehetséges.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Olyan üzenetre keresel, ami egynél több témához tartozik, ilyen nem lehetséges.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Hozzáadás",
   "Add GIF": "GIF hozzáadása",
+  "Add a description": "",
   "Add a new alert word": "Új figyelmeztető szó hozzáadása",
   "Add a new bot": "Új robot hozzáadása",
   "Add a new code playground": "Kód játszótér hozzáadása",
@@ -207,6 +207,7 @@
   "Bot": "Robot",
   "Bot email": "Robot e-mail",
   "Bot email (a-z, 0-9, and dashes only)": "Robot e-mail (csak a-z, 0-9 és kötőjelek)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Robot típusa",
   "Bots": "Robotok",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Ezen ablak bezárása",
   "Code": "",
   "Code playgrounds": "Kód játszóterek",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Szerkesztő összecsukása",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "A szervezeted azonosítási módjának beállítása.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Az alapértelmezett üzenetfolyamok beállítása, amelyekre az új felhasználók fel legyenek iratkozva, amikor csatlakoznak a szervezetedhez.",
   "Confirm": "Megerősít",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "Kód másolása",
   "Copy link": "Hivatkozás másolása",
   "Copy link to message": "Üzenetre mutató hivatkozás másolása",
+  "Copy link to profile": "",
   "Copy link to topic": "Téma linkjének másolása",
   "Copy mention syntax": "Említés formájának másolása",
   "Copy version": "Verziószám másolása",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Minden piszkozat törlése",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Piszkozat törlése",
@@ -413,7 +417,6 @@
   "Domain": "Domain",
   "Don’t allow disposable email addresses": "Nem engedje meg az eldobható email címek használatát",
   "Download": "Letöltés",
-  "Download .zuliprc": ".zuliprc letöltése",
   "Download botserverrc": "A botserverrc letöltése",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Minden kimenő aktív webhook robot konfigurációjának letöltése Zulip Botserver formátumban",
   "Download file": "Fájl letöltése",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Hatása",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-mail",
   "Email address": "E-mail cím",
   "Email address changes are disabled in this organization.": "Az email cím változtatás ebben a szervezetben le van tiltva.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Kép",
   "In a meeting": "Egy megbeszélésen",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Inaktív robotok",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "Ezen felhasználó kezelése",
   "Manage user": "Felhasználó kezelése",
+  "Manage your API key": "",
   "March": "március",
   "Mark all messages as read": "Minden üzenet átállításra olvasottra",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Megjelölés olvasottként",
   "Mark as resolved": "Jelöld lezártnak",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Előfordulás helye",
   "Mentions": "Említések",
   "Menus": "Menük",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Üzenet #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Üzenet #{stream_name} > {topic_name}",
   "Message actions": "Üzenet tevékenységek",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Üzenet {recipient_label}",
   "Message {recipient_names}": "Üzenet {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Üzenet {recipient_name} ({recipient_status})",
+  "Messages": "Üzenetek",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Sosem jár le",
   "New": "Új",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Új email",
   "New message": "Új üzenet",
   "New option": "Új opció",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Következő olvasatlan téma",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Nincs a szűrésnek megfelelő robot.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Nincs leírás.",
   "No drafts selected": "",
   "No drafts.": "Nincsenek piszkozatok.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Nincs a jelenlegi szűrésnek megfelelő meghívás.",
   "No language set": "Nincs beállított nyelv",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Nincs linkesítő beállítva.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Nincs ilyen felhasználó.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Egyik téma sincs lezárva.",
   "No topics match your current filter.": "Nincsenek a szűrésnek megfelelő témák.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Nem vagy tagja egy felhasználócsoportnak se",
   "No user groups": "",
   "No user to subscribe.": "Nincs feliratható felhasználó.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Nincs",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Vedd figyelembe, hogy minden robotod letiltásra fog kerülni.",
   "Note that organizations are limited to five exports per week.": "Megjegyzés: a szervezetek hetente öt alkalommal végezhetnek exportálást.",
   "Nothing to preview": "Nincs mit megmutatni előnézetként",
@@ -932,6 +940,7 @@
   "Other permissions": "További engedélyek",
   "Other settings": "Más beállítások",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Betegszabadságon",
   "Outgoing webhook message format": "Kimenő webhook üzenetformátuma",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Az üzenetfolyamban kötelező témákat használni",
   "Research": "Kutatás",
   "Resend": "Újraküldés",
-  "Resend invitation": "Meghívás újraküldése",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Az újraküldés során hiba történt. Kérjük töltsd be újra az oldalt és próbáld meg ismét.",
+  "Reset to default notifications": "",
   "Reset zoom": "Nagyítás alaphelyzetbe",
   "Restore draft": "Piszkozat visszaállítása",
   "Restrict email domains of new users?": "Korlátozzuk új felhasználók email domainjét?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Keressen rá, hogy\"\" a témában vagy az üzenet tartalmában.",
   "Search people": "Személyek keresése",
   "Search results": "Találatok",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Nézd meg, hogyan állíthatod be az e-mail küldést.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Válassz egy üzenetfolyamot vagy változtasd meg a téma nevét.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Csillagozott üzenetek számának mutatása",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "API kulcsod megjelenítése/megváltoztatása",
   "Showing messages since {time_string}.": "",
   "Sign up": "Feliratkozás",
   "Silent mentions do not trigger notifications.": "A csendes említésekről nem küldünk értesítést.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Az üzenetfolyam leírása nem tartalmazhat soremelést.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Jelszavuk törlődik a rendszereinkből, és minden általuk fenntartott robotot letiltunk.",
   "Theme": "Hangulat",
+  "There are no bots.": "",
   "There are no current alert words.": "Jelenleg nincsenek figyelt szavak.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "csütörtök",
   "Time": "Idő",
   "Time format": "Idő formátum",
@@ -1240,6 +1259,7 @@
   "Today": "Ma",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Feliratkozás váltása",
   "Toggle the gear menu": "Fogaskerék menü kapcsolása",
   "Toggle topic mute": "Téma némításának kapcsolása",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "A Zulipnak e-mailt küld a felhasználók címének ellenőrzéséhez és értesítések esetén.",
   "Zulip needs your permission to enable desktop notifications.": "Engedélyezd Zulipnak, hogy asztali értesítéseket küldjön.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "A Zulip fordításaink szuper önkéntes fordítói közösségünk hozzájárulásaként születnek. Ha szeretnél segíteni, nézd meg a Zulip fordítási útmutatónkat.",
@@ -1541,6 +1561,9 @@
   "more topics": "további témák",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/id/LC_MESSAGES/django.po b/locale/id/LC_MESSAGES/django.po
index 4558d7e262..4d79f68179 100644
--- a/locale/id/LC_MESSAGES/django.po
+++ b/locale/id/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Tim Abbott , 2018\n"
 "Language-Team: Indonesian (http://app.transifex.com/zulip/zulip/language/id/)\n"
@@ -21,57 +21,51 @@ msgstr ""
 "Language: id\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Data analisis tidak tersedia. Mohon hubungi administrator server anda."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -80,7 +74,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -89,7 +83,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -98,7 +92,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -107,7 +101,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -116,11 +110,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -136,124 +130,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -261,54 +255,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -317,8 +318,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Eror internal server"
 
@@ -423,7 +457,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Pengguna"
 
@@ -563,36 +597,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Batal"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -614,6 +744,451 @@ msgstr "Kategori"
 msgid "All"
 msgstr "Semua"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -633,11 +1208,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -652,12 +1223,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Buat organisasi"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -690,51 +1261,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisasi"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -750,14 +1318,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -805,7 +1365,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Mendaftar"
 
@@ -838,8 +1398,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Masuk"
 
@@ -872,26 +1432,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Coba sekarang."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Pesan"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1114,21 +1670,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "Pengguna biasa"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Tutup"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Perbarui"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2351,7 +2907,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2371,7 +2927,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2381,12 +2946,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Alamat email"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Temukan akun"
 
@@ -2418,7 +2983,7 @@ msgstr "Integrasi"
 msgid "Desktop & mobile apps"
 msgstr "Aplikasi desktop & mobile"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Organisasi baru"
 
@@ -2786,12 +3351,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2800,11 +3361,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2973,6 +3529,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Reset kata sandi anda"
@@ -3130,123 +3702,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Beberapa email tidak tervalidasi, jadi kami tidak mengirimkan undangan apapun."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Kami tidak dapat mengundang siapapun."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3276,72 +3832,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Organisasi Anda telah menonaktifkan penyuntingan pesan"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Anda tidak memiliki ijin untuk mengedit pesan ini"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Organisasi Anda telah menonaktifkan penyuntingan pesan"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Anda tidak memiliki ijin untuk mengedit pesan ini"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3360,137 +3916,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Pesan invalid"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Tidak dapat menampilkan pesan."
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3499,38 +4060,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3544,7 +4105,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3554,187 +4115,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "API ini tidak tersedia untuk robot yang menerapkan incoming webhook."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Akun ini tidak terasosiasi dengan subdomain ini"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Endpoint ini tidak menerima request dari robot."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Tidak cukup izin"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Endpoint ini memerlukan autentikasi sederhana HTTP."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Header otorisasi invalid untuk auth sederhana"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Robot webhook hanya dapat mengakses webhook"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomain harus memiliki panjang lebih dari atau sama dengan 3."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomain tidak dapat dimulai atau diakhiri dengan '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomain hanya dapat mengandung huruf kecil, angka, dan '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Mohon gunakan email asli Anda."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Organisasi yang Anda coba gabung menggunakan {email} tidak tersedia."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Silakan meminta sebuah undangan untuk {email} dari pengurus organisasi."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Alamat email Anda, {email}, tidak termasuk dalam salah satu domain yang diperbolehkan untuk mendaftar akun pada organisasi ini."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Tolong masukkan paling banyak 10 email."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Topik tidak ada"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Tidak dapat mengirim ke banyak siaran"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Siaran tidak ada"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Pesan harus memiliki penerima"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tipe pesan tidak valid"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Lampiran invalid"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Sebuah eror telah terjadi saat menghapus lampiran tersebut. Silakan coba lagi nanti."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3791,88 +4352,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Alamat tidak valid."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Diluar domain Anda."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Telah mempunyai akun."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nama emoji invalid."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Jenis emoji invalid"
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3880,119 +4441,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "Tidak dapat mengalokasi antrian event"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Belum masuk: Autentikasi API atau sesi pengguna dibutuhkan"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Penggunaan API melewati batas"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Kesalahan bentuk JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "API key tidak valid"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Subdomain tidak valid"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Akses ditolak"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4000,47 +4561,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reaksi sudah ada."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reaksi tidak ada."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4138,106 +4699,106 @@ msgstr "Produktivitas"
 msgid "Version control"
 msgstr "Kontrol versi"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Pesan harus tidak boleh kosong"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Pesan harus tidak mengandung null bytes"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Operator batas invalid: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4246,119 +4807,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4372,45 +4933,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token tidak ada"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4422,23 +4983,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Pengguna tidak berotoritas untuk melakukan perintah ini."
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4458,21 +5019,21 @@ msgstr "Tidak ada argumen '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Nilai tidak baik untuk '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4509,7 +5070,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4523,7 +5084,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4532,7 +5093,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4564,28 +5125,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4596,18 +5157,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4617,24 +5178,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4644,8 +5205,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4664,21 +5225,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4735,161 +5296,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nama terlalu panjang!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nama terlalu pendek!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Karakter pada nama invalid!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Nama atau username tidak dibenarkan"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Tipe robot invalid"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tipe antarmuka invalid"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Tidak ada robot demikian"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Tidak ada pengguna tersebut"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4923,215 +5484,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Karakter pada nama emoji invalid"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Publik"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoji unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji khusus"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Ekstra emoji Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoji unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji khusus"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Ekstra emoji Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Karakter pada nama emoji invalid"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Publik"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5144,20 +5701,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Tidak ada argumen 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Tidak ada argumen 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5195,41 +5752,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5280,7 +5837,7 @@ msgstr "Anda harus menentukan minimal satu alamat email."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5329,19 +5886,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Pengirim tidak ada"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5357,42 +5914,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Token APNS invalid"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5407,55 +5968,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Setidaknya satu metode autentikasi harus diaktifkan"
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Anda harus mengunggah tepat satu file."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5489,7 +6050,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Anda harus mengunggah tepat satu ikon."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5517,71 +6078,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Siaran sudah mempunyai nama demikian!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Tidak ada yang dapat dilakukan. Spesifikasikan setidaknya satu dari 'tambah' atau 'hapus'."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5590,7 +6151,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5614,112 +6175,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Anda hanya dapat mengunggah file satu per satu"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Tidak ada data baru diberikan"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Kata sandi salah!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Anda harus mengunggah tepat satu avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5780,43 +6341,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5849,11 +6410,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Topik tidak boleh kosong"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Konten tidak boleh kosong"
 
@@ -5880,7 +6441,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5897,83 +6458,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Subdomain invalid untuk bouncer push notifications"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Tipe token invalid"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP tidak valid"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/id/translations.json b/locale/id/translations.json
index a48a9c04ae..cec2c00e78 100644
--- a/locale/id/translations.json
+++ b/locale/id/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(tidak ada topik)",
   "(or )": "",
   "(you)": "(Anda)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 hari",
   "1 hour": "1 jam",
   "1 week": "1 minggu",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Tambah",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "Tanbah kata peringatan baru",
   "Add a new bot": "Tambah bot baru",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Email robot",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Tipe Bot",
   "Bots": "Bot",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Atur metode autentikasi untuk organisasi Anda",
   "Configure the default streams new users are subscribed to when joining your organization.": "Atur siaran default yang pengguna baru akan gabung saat bergabung dalam organisasi Anda",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "Salin tautan",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Hapus konsep",
@@ -413,7 +417,6 @@
   "Domain": "Domain",
   "Don’t allow disposable email addresses": "",
   "Download": "Unduh",
-  "Download .zuliprc": "Unduh .zuliprc",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Unggah semua pengaturan untuk robot outgoing webhook dalam format Zulip Botserver.",
   "Download file": "Unggah file",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efek",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "Alamat email",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Gambar",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Tandai sebagai sudah dibaca",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Disebut",
   "Menus": "Menu",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Aksi untuk pesan",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "Pesan",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Cari orang",
   "Search results": "Hasil pencarian",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "Mendaftar",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "Hari ini",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "Alihkan menu gerigi",
   "Toggle topic mute": "Alihkan pendiaman topik",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",
diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po
index d5be31759f..ae6f670c09 100644
--- a/locale/it/LC_MESSAGES/django.po
+++ b/locale/it/LC_MESSAGES/django.po
@@ -5,7 +5,7 @@
 # Translators:
 # Alessio Schreiber , 2019
 # Alya Abbott , 2021
-# Andrea, 2020-2023
+# Andrea, 2020-2024
 # Andrea, 2018-2020
 # f8749da976f048caab67f4576e6917dd_702b491 <83e87024d93e3b2042feb789a51687b3_802114>, 2019
 # 8d821b430c6446b8644f76c07c39dc73, 2019
@@ -18,9 +18,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: Andrea, 2020-2023\n"
+"Last-Translator: Andrea, 2020-2024\n"
 "Language-Team: Italian (http://app.transifex.com/zulip/zulip/language/it/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,57 +28,51 @@ msgstr ""
 "Language: it\n"
 "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Non permesso agli utenti ospiti"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organizzazione non valida"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Canali pubblici"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Canali privati"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
-msgstr "Messaggi diretti"
+msgstr "Messaggi privati"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
-msgstr "Messaggi diretti di gruppo"
+msgstr "Messaggi privati di gruppo"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Canale mancante per il grafico: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Nome del grafico sconosciuto: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "L'ora di inizio è successiva all'ora di fine. Inizio: {start}, Fine: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Nessun dato analitico disponibile. Si prega di contattare l'amministratore del server."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Parametri non validi"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -87,7 +81,7 @@ msgid ""
 "users to join."
 msgstr "La tua organizzazione non ha licenze Zulip rimanenti e non può più accettare nuovi utenti. Per favore [aumenta il numero di licenze]({billing_page_link}) o [disattiva gli utenti inattivi]({deactivate_user_help_page_link}) per consentire ai nuovi utenti di iscriversi."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr "La tua organizzazione ha solo una licenza Zulip rimanente. Puoi [aumentare il numero di licenze]({billing_page_link}) o [disattivare gli utenti inattivi]({deactivate_user_help_page_link}) per consentire a più di un utente di partecipare."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr "La tua organizzazione ha solo due licenze Zulip rimanenti. Puoi [aumentare il numero di licenze]({billing_page_link}) o [disattivare gli utenti inattivi]({deactivate_user_help_page_link}) per consentire a più di due utenti di partecipare."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -114,7 +108,7 @@ msgid ""
 "join."
 msgstr "La tua organizzazione ha solo tre licenze Zulip rimanenti. Puoi [aumentare il numero di licenze]({billing_page_link}) o [disattivare gli utenti inattivi]({deactivate_user_help_page_link}) per consentire a più di tre utenti di partecipare."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -123,11 +117,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Un nuovo membro ({email}) non è riuscito a entrare nella tua organizzazione perché tutte le licenze Zulip sono in uso. Per favore [aumenta il numero di licenze]({billing_page_link}) o [disattiva gli utenti inattivi]({deactivate_user_help_page_link}) per consentire ai nuovi membri di iscriversi."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Tutte le licenze Zulip per questa organizzazione sono attualmente in uso."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -143,124 +137,124 @@ msgstr "La registrazione è disattivata"
 msgid "Invalid remote server."
 msgstr "Server remoto non valido."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "È necessario acquistare licenze per tutti gli utenti attivi nella tua organizzazione (minimo {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Le fatture con più di {max_licenses} licenze non possono essere elaborate da questa pagina. Per completare l'aggiornamento, contattare {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Nessun metodo di pagamento registrato."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} termina in {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Metodo di pagamento sconosciuto. Si prega di contattare {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Qualcosa è andato storto. Per favore contatta {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Qualcosa è andato storto. Si prega di ricaricare la pagina."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Qualcosa è andato storto. Per favore attendi qualche secondo e riprova."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Si prega di aggiungere una carta di credito prima di iniziare la prova gratuita."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "Per favore aggiungi una carta di credito per pianificare l'aggiornamento."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Impossibile aggiornare il piano. Il piano è scaduto e sostituito con un nuovo piano."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Impossibile aggiornare il piano. Il piano è terminato."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "Non è possibile aggiornare le licenze nel periodo di fatturazione corrente per il piano di prova gratuito."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Impossibile aggiornare le licenze manualmente. Il tuo piano prevede la gestione automatica delle licenze."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Il tuo piano è già su licenze {licenses} nel periodo di fatturazione corrente."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Non è possibile ridurre le licenze nel periodo di fatturazione corrente."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr "Non è possibile modificare le licenze per il prossimo ciclo di fatturazione per un piano che sta venendo declassato."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Il tuo piano è già programmato per il rinnovo con licenze {licenses_at_next_renewal}."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Niente da cambiare."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Nessun cliente per questa organizzazione!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Sessione non trovata"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Deve essere un responsabile della fatturazione o un proprietario dell'organizzazione"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Tentativo di pagamento non trovato"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Passare stripe_session_id o stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -268,54 +262,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "La richiesta della tua organizzazione per l'hosting sponsorizzato è stata approvata! Sei stato aggiornato a {plan_name}, gratuitamente. {emoji}\n\nSe potessi {begin_link}indicare Zulip come sponsor sul tuo sito web{end_link}, saremmo davvero grati!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr "Il parametro 'confirmed' è richiesto"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "L'accesso al token di fatturazione è scaduto."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Token di accesso alla fatturazione non valido."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr "Impossibile migrare il cliente dal server ai domini. Si prega di contattare il supporto per assistenza."
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr "L'account utente non esiste ancora."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "Devi accettare i Termini di Servizio per procedere."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr "Questo zulip_org_id non è registrato nel sistema di gestione della fatturazione di Zulip."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr "Chiave zulip_org_key non valida per questo zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "La registrazione del tuo server è stata disattivata."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Parametri non validi"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Errore"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Metodo non consentito (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Pagina non trovata (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -324,8 +325,41 @@ msgid ""
 "                        "
 msgstr "\n                        Se questo errore è imprevisto, puoi\n                        contattare il supporto.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Metodo non consentito (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Internal server error"
 
@@ -430,7 +464,7 @@ msgstr "Attività di 15 giorni"
 msgid "Total users"
 msgstr "Totale utenti"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Utenti"
 
@@ -570,37 +604,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Assicurati di aver copiato correttamente il link nel tuo browser. Se stai ancora visualizzando questa pagina, probabilmente è colpa nostra. Ci dispiace."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Fatturazione"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Chiudi finestra"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Non importa"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Downgrade"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Annulla"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Downgrade"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confermare"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Non importa"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Stato di fatturazione"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Disattivare la registrazione del server?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Limite di tariffa superato"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Limite tariffa superato."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Poi riprovare tra %(retry_after)s secondi."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Upgrade"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Converti l'organizzazione demo prima dell'aggiornamento."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -621,6 +751,451 @@ msgstr "Categorie"
 msgid "All"
 msgstr "Tutto"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "La comunità di sviluppo di Zulip"
@@ -640,11 +1215,7 @@ msgstr "Partecipa come self-hoster"
 msgid "Join as a contributor"
 msgstr "Unisciti come contributore"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Stato di fatturazione"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -659,12 +1230,12 @@ msgstr "Stato di fatturazione"
 msgid "Create organization"
 msgstr "Crea organizzazione"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Piani e prezzi"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -697,51 +1268,48 @@ msgstr "Prezzi per l'istruzione"
 msgid "View pricing"
 msgstr "Visualizza i prezzi"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr "Disattivare la registrazione del server?"
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip per business"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contatta il supporto"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Da"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organizzazione"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Oggetto"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Messaggio"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Invia"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Grazie per averci contattato"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Grazie per averci contattato!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Ti contatteremo presto."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -757,14 +1325,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Prova subito Zulip"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Upgrade"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Converti l'organizzazione demo prima dell'aggiornamento."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -812,7 +1372,7 @@ msgstr "Continua"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Iscriviti"
 
@@ -845,8 +1405,8 @@ msgstr "Hai già un account?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Accedi"
 
@@ -879,26 +1439,22 @@ msgstr "Se questo messaggio non scompare, prova a ricari
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Errore durante il caricamento di Zulip. Prova a ricaricare la pagina."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Impossibile connettersi a Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Gli aggiornamenti potrebbero essere ritardati."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Ritento a breve..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Prova adesso."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Messaggi"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Errore di sottodominio di autenticazione"
@@ -1121,21 +1677,21 @@ msgstr "Utenti guest"
 msgid "Normal users"
 msgstr "Utenti normali"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "Inoltra le email a un account di posta elettronica."
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Chiudi"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Aggiorna"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -1719,12 +2275,12 @@ msgstr "\n    Non rispondere a questa email. Questo server Zulip non è configur
 #: templates/zerver/emails/missed_message.subject.txt:2
 #, python-format
 msgid "Group DMs with %(huddle_display_name)s"
-msgstr "Messaggi diretti di gruppo con %(huddle_display_name)s"
+msgstr "Messaggi privati di gruppo con %(huddle_display_name)s"
 
 #: templates/zerver/emails/missed_message.subject.txt:3
 #, python-format
 msgid "DMs with %(sender_str)s"
-msgstr "Messaggio diretto con %(sender_str)s"
+msgstr "Messaggio privato con %(sender_str)s"
 
 #: templates/zerver/emails/missed_message.subject.txt:12
 #, python-format
@@ -2358,8 +2914,8 @@ msgstr "La tua richiesta di sponsorizzazione Zulip è stata approvata! La tua or
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
-msgstr "Se potessi elencare Zulip come sponsor sul tuo sito web, lo apprezzeremmo davvero!"
+"appreciate it!"
+msgstr ""
 
 #: templates/zerver/find_account.html:4
 msgid "Find your accounts"
@@ -2378,7 +2934,16 @@ msgid ""
 "                    "
 msgstr "\n                    Email inviate! Riceverai solo email agli indirizzi\n                    associati alle organizzazioni Zulip. Gli indirizzi inseriti\n                    nella pagina precedente sono elencati di seguito:\n                    "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2388,12 +2953,12 @@ msgid ""
 "                    "
 msgstr "\n                    Inserisci il tuo indirizzo email per ricevere un'email con gli URL\n                    per tutte le organizzazioni Zulip Cloud in cui hai\nconti attivi. Se hai dimenticato anche la tua password,\n                    puoi resettarla.\n                    "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Indirizzo email"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Trova account"
 
@@ -2425,7 +2990,7 @@ msgstr "Integrazioni"
 msgid "Desktop & mobile apps"
 msgstr "Desktop e mobile apps"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nuova organizzazione"
 
@@ -2793,13 +3358,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Contatta la persona che ti ha invitato e chiedile di aumentare il numero di licenze, quindi riprova."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Limite di tariffa superato"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Limite tariffa superato."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2807,11 +3368,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Hai superato il limite di come\n                        spesso un utente può eseguire questa azione."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Poi riprovare tra %(retry_after)s secondi."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2980,6 +3536,22 @@ msgstr "Cosa ti interessa?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Iscriviti alla newsletter a basso traffico di Zulip (poche email all'anno)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr "Registrazione imprevista del server Zulip"
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr "\n                        la tua organizzazione Zulip è registrata a una\n                        diversa installazione del server Zulip.\n\n                        Per favore contatta il supporto Zulip\n                        per assistenza per risolvere questo problema.\n                        "
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Resetta password"
@@ -3137,123 +3709,107 @@ msgid ""
 "                        "
 msgstr "\n                        Puoi usare anche l' app Desktop di Zulip.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr "Registrazione imprevista del server Zulip"
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr "\n                        la tua organizzazione Zulip è registrata a una\n                        diversa installazione del server Zulip.\n\n                        Per favore contatta il supporto Zulip\n                        per assistenza per risolvere questo problema.\n                        "
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "iscrizioni"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} si è appena registrato su Zulip. (totale: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} ha accettato il tuo invito ad unirti a Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "Impossibile attivare un account segnaposto; chiedi all'utente di registrarsi invece."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Mappatura degli ordini non valida."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Id campo {id} non trovato."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "Nome del gruppo di canale predefinito '{group_name}' non valido "
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr "Nome del gruppo di canali predefinito troppo lungo (limite: {max_length} caratteri)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr "Il nome predefinito del gruppo di canali '{group_name}' contiene caratteri NULL (0x00)."
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr "Gruppo di canale predefinito {group_name} non valido "
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' è un canale predefinito e non può essere aggiunto a '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Il gruppo di canale predefinito '{group_name}' esiste già"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Il canale '{stream_name}' è già presente nel gruppo del canale di default '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Il canale '{stream_name}'  non è presente nel gruppo di canale predefinito '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr "Questo gruppo di canali predefinito è già denominato '{group_name}'"
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Per proteggere gli utenti, Zulip limita il numero di inviti che puoi inviare in un giorno. Poiché hai raggiunto il limite, non sono stati inviati inviti."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Il tuo account è troppo recente per poter spedire inviti per questa organizzazione. Chiedi ad un amministratore, o a un utente più anziano."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Alcune email non sono valide, quindi non abbiamo inviato nessun invito."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Non siamo stati in grado di invitare nessuno."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3265,11 +3821,11 @@ msgstr "Niente da cambiare"
 
 #: zerver/actions/message_edit.py:104
 msgid "Direct messages cannot be moved to streams."
-msgstr "I messaggi diretti non possono essere spostati nei canali."
+msgstr "I messaggi privati non possono essere spostati nei canali."
 
 #: zerver/actions/message_edit.py:106
 msgid "Direct messages cannot have topics."
-msgstr "I messaggi diretti non possono avere argomenti."
+msgstr "I messaggi privati non possono avere argomenti."
 
 #: zerver/actions/message_edit.py:109
 msgid "Invalid propagate_mode without topic edit"
@@ -3283,72 +3839,72 @@ msgstr "Impossibile modificare il contenuto del messaggio durante la modifica de
 msgid "Widgets cannot be edited."
 msgstr "I widget non possono essere modificati."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "La tua organizzazione ha disattivato la modifica dei messaggi"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Non hai il permesso di modificare questo messaggio"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Il tempo massimo per editare il messaggio è trascorso"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} ha contrassegnato questo argomento come risolto."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} ha contrassegnato questo argomento come non risolto."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Questo argomento è stato spostato in {new_location} da {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Un messaggio è stato spostato da questo argomento a {new_location} da {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} messaggi sono stati spostati da questo argomento a {new_location} da {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Questo argomento è stato spostato qui da {old_location} da {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[Un messaggio]({message_link}) è stato spostato qui da {old_location} da {user}."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} messaggi sono stati spostati qui da {old_location} da {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "La tua organizzazione ha disattivato la modifica dei messaggi"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Non hai il permesso di modificare questo messaggio"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Il tempo massimo per editare il messaggio è trascorso"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "Il limite di tempo per modificare l'argomento di questo messaggio è scaduto."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Non hai il permesso di spostare questo messaggio"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Il limite di tempo per la modifica del messaggio in questo canale messaggio è scaduto"
 
@@ -3367,137 +3923,142 @@ msgstr "Flag non modificabile: '{flag}'"
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "Operazione non valida del flag del messaggio: '{operation}'"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Messaggio(i) non valido"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Impossibile rilasciare il messaggio"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Previsto esattamente un canale"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Tipo di dato non valido per il canale"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Tipo di dato non valido per i destinatari"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Gli elenchi dei destinatari possono contenere e-mail o ID , ma non entrambi."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Il tuo bot {bot_identity} ha provato ad inviare un messaggio al canale ID {stream_id}, ma non c'è un canale con questo ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Il tuo bot {bot_identity} ha provato ad inviare un messaggio al canale {stream_name}, ma il canale non esiste. Clicca [here]({new_stream_link}) per crearlo."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Il tuo bot {bot_identity} ha provato ad inviare un messaggio al canale {stream_name}. Il canale esiste ma non ha iscritti."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
-msgstr "I messaggi diretti sono disattivati in questa organizzazione."
+msgstr "I messaggi privati sono disattivati in questa organizzazione."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr "Non hai il permesso di accedere ad alcuni dei destinatari."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Gli argomenti sono obbligatori in questa organizzazione"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widget: il programmatore API ha inviato contenuto JSON non valido"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Esiste già un'emoji personalizzata con questo nome."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr "L'elenco ordinato non deve contenere linkifiers duplicati."
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr "L'elenco ordinato deve enumerare tutti gli esistenti linkifiers esattamente una volta."
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Il messaggio programmato è già stato inviato"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "L'orario di consegna programmato deve essere nel futuro."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Non è stato possibile inviare il messaggio all'orario pianificato."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Il messaggio pianificato per le ore {delivery_datetime} non è stato inviato a causa del seguente errore:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[Vedi messaggi pianificati](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Il canale è già disattivato"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Il canale non è attualmente disattivato"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Il canale chiamato {stream_name} esiste già"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "Canale {stream_name} non archiviato."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} ha modificato le [autorizzazioni di accesso](/help/stream-permissions) per questo canale da **{old_policy}** a **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3506,38 +4067,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} ha modificato le [autorizzazioni di pubblicazione](/help/stream-sending-policy) per questo canale:\n\n* **Vecchie autorizzazioni**: {old_policy}.\n* **Nuove autorizzazioni**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} ha rinominato il canale {old_stream_name} in {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Nessuna descrizione."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} ha cambiato la descrizione per questo canale."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Vecchia descrizione"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Nuova descrizione"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Per sempre"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "I messaggi in questo canale ora verranno conservati per sempre."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3551,7 +4112,7 @@ msgstr "{user} ha modificato il [periodo di conservazione del messaggio](/help/m
 msgid "You cannot attach a submessage to this message."
 msgstr "Non puoi allegare un sotto messaggio a questo messaggio."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr "ID utente  {user_id} non valido"
@@ -3561,187 +4122,187 @@ msgstr "ID utente  {user_id} non valido"
 msgid "User group '{group_name}' already exists."
 msgstr "Il gruppo utenti '{group_name}' esiste già."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Questa API non è disponibile per i webhook bot in arrivo."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "L'Account non è associato con questo sottodominio"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "L'endpoint non accetta richieste bot."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Devi essere un amministratore del server"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permessi insufficienti"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "L'endpoint richiede HTTP basic authentication."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Header invalido di autorizzazione per l'autenticazione di base"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Authorization header mancante per l'autenticazione di base "
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "I bot Webhook possono accedere solo ai webhook"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Il tuo account {username} è stato disattivato. Contatta l'amministratore della tua organizzazione per riattivarlo."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "La password è troppo debole."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Il sottodominio deve avere una lunghezza minima di 3 o maggiore."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Il sottodominio non può iniziare o finire con '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Il sottodominio può solo avere lettere minuscole, numeri, e '-'s."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Sottodominio già in uso. Scegline uno diverso."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Sottodominio riservato. Scegline un altro."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Per favore usa un'email reale."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "L'organizzazione in cui stai provando a entrare usando {email} non esiste."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Per favore richiedi un invito per {email} dall'amministratore dell'organizzazione."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Il tuo indirizzo email, {email}, non appartiene a uno dei domini che sono autorizzati a registrarsi in questa organizzazione."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Gli indirizzi email contenenti + non sono ammessi in questa organizzazione."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "I nuovi membri non possono unirsi a questa organizzazione perché tutte le licenze Zulip sono in uso. Contatta la persona che ti ha invitato e chiedile di aumentare il numero di licenze, quindi riprova."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nuova password"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Conferma nuova password"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr "Stai facendo troppi tentativi di accesso. Riprova tra {seconds} secondi o contatta l'amministratore dell'organizzazione per assistenza."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "La tua password è stata disabilitata perché troppo debole. Reimposta la password per crearne una nuova."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Suggerimento: puoi inserire più indirizzi email separati da virgole."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Si prega di inserire al massimo 10 e-mail."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Non siamo riusciti a trovare questa l'organizzazione Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Email  '{email}' non valido"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Argomento mancante"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Non posso inviare su più canali"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Canale mancante"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Il messaggio deve avere destinatari"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tipo di messaggio non valido"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Allegato non valido"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Si è verificato un errore durante la cancellazione dell'allegato. Per favore riprova più tardi."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Il messaggio deve avere destinatari!"
 
@@ -3798,88 +4359,88 @@ msgstr "L'utente ha disabilitato la sincronizzazione delle bozze."
 msgid "Draft does not exist"
 msgstr "La bozza non esiste"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Apri Zulip per vedere il contenuto dello spoiler"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr "Notifiche di {service_name}"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Indirizzo non valido."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Fuori del tuo dominio."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Gli indirizzi email contenenti + non sono accettati."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Riservato ai bot di sistema."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} ha già un account"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Hai già un account."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "L'account è stato disattivato."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "Emoji '{emoji_name}' non esiste"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoji personalizzata non valida."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nome emoji personalizzato non valido."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Questa emoji personalizzata è stata disattivata."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Codice emoji non valido."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nome emoji non valido."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Tipo di emoji non valido."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Deve essere un amministratore dell''organizzazione o un autore di emoji"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "I nomi delle emoji devono terminare con una lettera o una cifra."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "I nomi delle emoji devono contenere solo lettere inglesi minuscole, cifre, spazi, trattini e caratteri di sottolineatura."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Manca il nome del Emoji"
 
@@ -3887,119 +4448,119 @@ msgstr "Manca il nome del Emoji"
 msgid "Could not allocate event queue"
 msgstr "Impossibile allocare la coda degli eventi"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Non loggato in: autenticazione API o sessione utente richiesta"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Il canale '{stream}' non esiste"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Canale con ID '{stream_id}' non esiste"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "proprietario organizzazione"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "utente"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Impossibile disattivare l'unica {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Dichiarazione include Markdown non valida: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "L'utilizzo dell'API ha superato il limite di velocità"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON malformato"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Devi essere un membro dell'organizzazione"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Deve essere un amministratore dell'organizzazione"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Deve essere un proprietario dell'organizzazione"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Il nome utente o la password sono errati"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "L'account è disattivato"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "L'organizzazione è stata disattivata"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "La registrazione del servizio di notifica push mobile per il tuo server è stata disattivata"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "L'autenticazione della password è disabilitata in questa organizzazione"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "La tua password è stata disabilitata e deve essere reimpostata"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Chiave API invalida"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Chiave API non valida"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr "L'evento '{event_type}' non è attualmente supportato dal webhook {webhook_name}; ignorando."
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Impossibile analizzare la richiesta: {webhook_name} ha generato questo evento?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Utente non autenticato"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Sotto dominio non valido"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Accesso negato"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4007,47 +4568,47 @@ msgid ""
 "messages in this topic."
 msgstr "Hai solo il permesso di spostare i {total_messages_allowed_to_move}/{total_messages_in_topic} messaggi più recenti in questo argomento."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "La reazione esiste già"
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "La reazione non esiste"
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr "La tua organizzazione è registrata su un server Zulip diverso. Contatta il supporto di Zulip per assistenza nella risoluzione di questo problema."
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr "Organizzazione non registrata"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "Non hai il permesso di utilizzare menzioni con il chiocciola in questo canale."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "Non hai il permesso di utilizzare menzioni con il carattere chiocciola per questo argomento."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Username di Twitter"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "Username di GitHub"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "L'account esterno personalizzato deve definire il pattern URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Tipo di account esterno non valido"
 
@@ -4145,106 +4706,106 @@ msgstr "Produttività"
 msgid "Version control"
 msgstr "Controlla versione"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Il messaggio non può essere vuoto"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Il messaggio non deve contenere byte null"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr "Non ti è consentito menzionare il gruppo utente '{user_group_name}'. Devi essere un membro di '{can_mention_group_name}' per menzionare questo gruppo."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr "Operatore {operator} non supportato."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Operatore raggruppato non valido: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Argomento 'anchor' mancante."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Anchor non valido"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Se non conosci Zulip, dai un'occhiata alla nostra [Usare Zulip per una guida di classe]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Se non conosci Zulip, dai un'occhiata alla nostra [Guida introduttiva]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "Abbiamo anche una guida per [Configurare Zulip per una classe]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "Abbiamo anche una guida per [Configurare la tua organizzazione]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Tieni presente che questa è un'[organizzazione demo]({demo_organization_help_url}) e verrà **eliminata automaticamente** tra 30 giorni."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Ciao, e benvenuto in Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
-msgstr "Questo è un mio messaggio diretto, Welcome Bot."
+msgstr "Questo è un mio messaggio privato, Welcome Bot."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Posso anche aiutarti a prepararti! Basta fare clic in un punto qualsiasi di questo messaggio o premere 'r' per rispondere."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Ecco alcuni messaggi che comprendo:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Puoi [scaricare](/apps/) le [app per dispositivi mobili e desktop](/apps/). Zulip funziona alla grande anche in un browser."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Vai a [Impostazioni profilo](#impostazioni/profilo) per aggiungere una [immagine del profilo](/help/change-your-profile-picture) e modificare le tue [informazioni profilo](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4253,119 +4814,119 @@ msgid ""
 "experience."
 msgstr "Vai su [Preferenze](#impostazioni/preferenze) per [passare tra i temi chiari e scuri](/aiuto/tema-scuro), [scegliere il tuo tema di emoji preferito](/aiuto/emoji-e-emoticon#cambia-il-tuo-set-di-emoji), [cambiare la tua lingua](/aiuto/cambia-la-tua-lingua) e apportare altre modifiche alla tua esperienza su Zulip."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "In Zulip, i canali [determinano chi riceve un messaggio](/help/streams-and-topics). Sono simili ai canali di altre app di chat."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Sfoglia e iscriviti ai canali](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "In Zulip, gli argomenti [ti dicono di cosa tratta un messaggio](/help/streams-and-topics). Sono oggetti leggeri, molto simili alla riga dell'oggetto di un'e-mail."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
-msgstr "Dai un'occhiata a [Conversazioni recenti](#recenti) per vedere cosa sta succedendo! Puoi tornare a questa conversazione facendo clic su \"Messaggi diretti\" in alto a sinistra."
+msgstr "Dai un'occhiata a [Conversazioni recenti](#recenti) per vedere cosa sta succedendo! Puoi tornare a questa conversazione facendo clic su \"Messaggi privati\" in alto a sinistra."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Le [scorciatoie da tastiera](#keyboard-shortcuts) di Zulip ti consentono di muoverti all'interno dell'app in modo veloce ed efficace."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Premi `?` in qualunque momento per visualizzare un [riepilogo](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip utilizza [Markdown](/help/format-your-message-using-markdown), un formato intuitivo per **grassetto**, *corsivo*, elenchi puntati e altro. Clicca [qui](#message-formatting) per un cheat sheet."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Dai un'occhiata ai nostri [suggerimenti per i messaggi](/help/messaging-tips) per conoscere le reazioni delle emoji, i blocchi di codice e molto altro!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Consulta la nostra [Guida introduttiva](/help/getting-started-with-zulip) o sfoglia il [Centro assistenza](/help/) per saperne di più!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Mi dispiace, non capisco il tuo messaggio. Per favore prova uno di questi comandi:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Questo è un canale privato, come indicato dall'icona del lucchetto accanto al nome del canale."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "I canali privati sono visibili solo ai membri del canale."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Per modificare il canale, vai su  [Impostazioni canali]({stream_settings_url}) e clicca su `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Questo è un messaggio sul canale #**{default_notification_stream_name}** con l'argomento `argomento demo`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Gli argomenti sono uno strumento semplice per organizzare al meglio  le conversazioni."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Puoi saperne di più sugli argomenti su [Canali e argomenti]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Questo è un messaggio sul canale #**{default_notification_stream_name}** con l'argomento `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr "[Inizia un nuovo argomento]({start_topic_help_url}) ogni volta che non rispondi a un messaggio precedente."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "JSON non valido nella risposta"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Formato della risposta non valido"
 
@@ -4379,45 +4940,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "Opzioni GCM non valide per il bouncer: {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token inesistente"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Questa organizzazione ha disabilitato l'inclusione del contenuto dei messaggi nelle notifiche push per dispositivi mobili"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} ha menzionato @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} ti ha menzionato:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} ha menzionato tutti:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Notifica di prova"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr "Questa è una notifica di prova da {realm_name} ({realm_uri})."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Dispositivo non riconosciuto"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr "Il dispositivo non viene riconosciuto dal push bouncer"
 
@@ -4429,23 +4990,23 @@ msgstr "Tipo di dati non valido per l'ID canale"
 msgid "Recipient list may only contain user IDs"
 msgstr "L'elenco dei destinatari può contenere solo ID utente"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Utente non autorizzato per questa query"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' non sta più usando Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
-msgstr "Non puoi inviare messaggi diretti al di fuori della tua organizzazione."
+msgstr "Non puoi inviare messaggi privati al di fuori della tua organizzazione."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr "Push notifications bouncer errore: {error}"
@@ -4465,21 +5026,21 @@ msgstr "Argument '{var_name}' perso"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Valore errato per '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Paypload malformato"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "L'argomento \"{name}\" non è un JSON valido."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Il messaggio programmato non esiste"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr "account di sicurezza {service_name}"
@@ -4516,7 +5077,7 @@ msgstr "Per favore scegli un: 'canale' o 'canale_id'"
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "ID canale non valido"
 
@@ -4530,7 +5091,7 @@ msgstr "Il nome del canale '{stream_name}' è già stato preso."
 msgid "Invalid stream name '{stream_name}'"
 msgstr "Nome del canale  '{stream_name}' non valido"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "Un canale predefinito non può essere privato."
 
@@ -4539,7 +5100,7 @@ msgstr "Un canale predefinito non può essere privato."
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "Canale(i) ({stream_names}) non esistono"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "I canali pubblici Web non sono abilitati."
 
@@ -4571,28 +5132,28 @@ msgstr "L'argomento non può essere vuoto!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr "Carattere non valido nell'argomento, alla posizione {position}!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "I dati dei sottoscrittori non sono disponibili per questo canale"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Non posso ottenere l'elenco dei sottoscrittori del canale privato"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} non è un booleano"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} non è una data"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} non è un dict "
@@ -4603,18 +5164,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr "Argomento \"{argument}\" a {var_name} è inatteso."
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} non è un galleggiante"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} è troppo piccolo"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} non è un numero intero"
@@ -4624,24 +5185,24 @@ msgstr "{var_name} non è un numero intero"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} non è un JSON valido"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} è troppo grande"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} non è una lista"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Non valida {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} è troppo lungo (limit: {max_length} characters)"
@@ -4651,8 +5212,8 @@ msgstr "{var_name} è troppo lungo (limit: {max_length} characters)"
 msgid "{var_name} is too short."
 msgstr "{var_name} è troppo corto."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} non è una stringa"
@@ -4671,21 +5232,21 @@ msgstr "Invalido {var_name}: {msg}"
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Il caricamento supererebbe la quota di caricamento dell'organizzazione."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Impossibile decodificare l'immagine; hai caricato un file immagine?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Le dimensioni dell'immagine superano il limite."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Immagine animata danneggiata."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Formato immagine animata sconosciuto."
 
@@ -4742,161 +5303,161 @@ msgstr "Il nome del gruppo utenti non può superare {max_length} caratteri."
 msgid "User group name cannot start with '{prefix}'."
 msgstr "Il nome del gruppo utenti non può iniziare con '{prefix}'."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nome troppo lungo!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nome troppo corto!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Carattere non valido nel nome!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Formato non valido!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Il Nome è già in uso!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Nome o nome utente non buono"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "Integrazione  '{integration_name}' non valida."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr "Parametri di configurazione mancanti: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr "Valore {key} non valido {value} ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Dati di configurazione non validi!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Tipo di bot non valido"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tipo di interfaccia non valido"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr "ID utente non valido: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Nessun bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Nessun utente"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "L'utente è disattivato"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "'{item}' non può essere vuoto."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} ha lunghezza errata {length}; dovrebbe essere {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} non è un fuso orario riconosciuto"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} non è un codice colore esadecimale valido"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} deve avere esattamente  {length} elementi"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} manca la chiave da {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr "Argomenti inaspettati: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} non è un allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} è sbagliata )"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} non è un URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "Il pattern URL deve contenere '%(username)s'."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' non può essere vuoto."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Il campo non deve avere scelte duplicate."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' non è una scelta valida per '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} non è una stringa o un elenco intero"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} non è una stringa o un numero intero"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} non ha una lunghezza"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} è mancante"
@@ -4930,215 +5491,211 @@ msgstr "Errore CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr "Reverse proxy configurazione errata: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "Eventi di canale"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Disponibile su Zulip Cloud Standard. Esegui l'upgrade per accedere."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr "Disponibile su Zulip Cloud Plus. Aggiorna per accedere."
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "Integrazione GIPHY disabilitata"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "Consenti GIF classificate Y (pubblico molto giovane)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "Consenti GIF classificate G (pubblico generico)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "Consenti GIF con classificazione PG (Guida dei genitori)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "Consenti GIF classificate PG-13 (Guida dei genitori - minori di 13 anni)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "Consenti GIF classificate R (limitate)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Carattere non valido nel nome dell'emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr "Espressione regolare non valida: {regex}"
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Errore sconosciuto nell'espressione regolare"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Modello di URL non valido."
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "Il gruppo %(name)r nel modello di URL non è presente nel pattern del linkifier."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Il gruppo %(name)r nel modello di linkifier non è presente nel modello di URL."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Caratteri non validi nella lingua dei pigmenti"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr "Manca la variabile richiesta \"code\" nel modello di URL"
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr "\"code\" dovrebbe essere l'unica variabile presente nel modello URL"
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Amministratori, moderatori, membri e ospiti"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Amministratori, moderatori e membri"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Amministratori e moderatori"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Solo amministratori"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nessuno"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Utente sconosciuto"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Proprietario dell'organizzazione"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Amministratore dell''organizzazione"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderatore"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Membro"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Ospite"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web pubblico"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Pubblico"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Privato, storico accessibile"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Privato, storico non accessibile"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Pubblico, storico protetto"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Tutti i membri del canale possono pubblicare messaggi"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Solo gli amministratori dell'organizzazione possono pubblicare messaggi"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Solo gli amministratori e i moderatori dell'organizzazione possono pubblicare messaggi"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Solo i membri completi dell'organizzazione possono pubblicare messaggi"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoji Unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji personalizzate"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoji extra di Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr "Utente con ID {user_id} è disattivato"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr "Utente con ID {user_id} è un bot"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Elenco di opzioni"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Raccoglitore di persone"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Testo breve"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Testo lungo"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Selettore data"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Account esterno"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronomi"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Espressione regolare non valida: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Errore sconosciuto nell'espressione regolare"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Modello di URL non valido."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "Il gruppo %(name)r nel modello di URL non è presente nel pattern del linkifier."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Il gruppo %(name)r nel modello di linkifier non è presente nel modello di URL."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoji Unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji personalizzate"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoji extra di Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Carattere non valido nel nome dell'emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Caratteri non validi nella lingua dei pigmenti"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "Manca la variabile richiesta \"code\" nel modello di URL"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "\"code\" dovrebbe essere l'unica variabile presente nel modello URL"
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "Eventi di canale"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Disponibile su Zulip Cloud Standard. Esegui l'upgrade per accedere."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "Disponibile su Zulip Cloud Plus. Aggiorna per accedere."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "Integrazione GIPHY disabilitata"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Consenti GIF classificate Y (pubblico molto giovane)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "Consenti GIF classificate G (pubblico generico)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "Consenti GIF con classificazione PG (Guida dei genitori)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "Consenti GIF classificate PG-13 (Guida dei genitori - minori di 13 anni)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "Consenti GIF classificate R (limitate)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web pubblico"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Pubblico"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Privato, storico accessibile"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Privato, storico non accessibile"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Pubblico, storico protetto"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Tutti i membri del canale possono pubblicare messaggi"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Solo gli amministratori dell'organizzazione possono pubblicare messaggi"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Solo gli amministratori e i moderatori dell'organizzazione possono pubblicare messaggi"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Solo i membri completi dell'organizzazione possono pubblicare messaggi"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Amministratori, moderatori, membri e ospiti"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Amministratori, moderatori e membri"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Amministratori e moderatori"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Solo amministratori"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nessuno"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Utente sconosciuto"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Proprietario dell'organizzazione"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Amministratore dell''organizzazione"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderatore"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Membro"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Ospite"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Indirizzo IP sconosciuto"
@@ -5151,20 +5708,20 @@ msgstr "un sistema operativo sconosciuto"
 msgid "An unknown browser"
 msgstr "Browser sconosciuto"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Argomento 'queue_is' mancante"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Argomento 'last_event_is' mancante"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Un evento più recente di {event_id} è già stato eliminato!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Evento {event_id} non è in questa coda"
@@ -5202,41 +5759,41 @@ msgstr "Password non corretta."
 msgid "User-Agent header missing from request"
 msgstr "User-Agent header mancante dalla richiesta"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "L'etichetta non può essere vuota."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Il campo deve avere almeno una scelta."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Tipo di campo non supportato per la visualizzazione nel riepilogo del profilo."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Tipo campo non valido."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Nel riepilogo del profilo possono essere visualizzati solo 2 campi  personalizzati."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Un campo con quell'etichetta esiste già."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Il campo personalizzato predefinito non può essere aggiornato."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Endpoint non disponibile in produzione."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend non abilitato."
 
@@ -5287,7 +5844,7 @@ msgstr "Devi specificare almeno un indirizzo email."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "Lo stream non esiste con id: {stream_id}. Non sono state inviate invitazioni."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "Non sei autorizzato a iscrivere altri utenti ai canali."
 
@@ -5336,19 +5893,19 @@ msgstr "L'ancora può essere esclusa solo alla fine del range"
 msgid "No such topic '{topic}'"
 msgstr "Non esiste alcun argomento '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Mittente mancante"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Il mirroring non è consentito con gli ID utente del destinatario"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Messaggio con mirroring non valido"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Il mirroring Zephyr non è permesso in questa organizzazione"
 
@@ -5364,42 +5921,46 @@ msgstr "Utente già in muto"
 msgid "User is not muted"
 msgstr "L'utente non è in muto"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "La presenza non è supportata per gli utenti di bot."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Nessun dato di presenza per {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Il client non ha passato nessun nuovo valore."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Il client deve passare emoji_name se passa emoji_code o reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "Stato non valido: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "ID app non valido"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token di lunghezza vuoto o non valido"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Token APNS non valido"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "Errore restituito dal bouncer: {result}"
@@ -5414,55 +5975,55 @@ msgstr "Almeno uno dei seguenti argomenti deve essere presente: emoji_name, emoj
 msgid "Read receipts are disabled in this organization."
 msgstr "Le conferme di lettura sono disabilitate in questa organizzazione."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Lingua  '{language}' non valida"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Almeno un metodo di autenticazione deve essere abilitato."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "video_chat_provider  {video_chat_provider} non valido"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "giphy_rating {giphy_rating} non valido"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Deve essere un'organizzazione demo."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "Dominio non valido: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Il dominio {domain} fa già parte della tua organizzazione."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Nessuna voce trovata per il dominio {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Devi caricare esattamente un file."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Solo gli amministratori possono ignorare le emoji predefinite."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "Il file caricato è più grande del limite consentito di {max_size} MB"
@@ -5496,7 +6057,7 @@ msgstr "L'esportazione è ancora in corso"
 msgid "You must upload exactly one icon."
 msgstr "Devi caricare esattamente un'icona."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier non trovato."
 
@@ -5524,71 +6085,71 @@ msgstr "Formato della richiesta non valido"
 msgid "Invalid DSN"
 msgstr "DSN non valido"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "I canali privati non possono essere impostati come predefiniti."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Devi passare \"new_description\" o \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Valore non valido per \"op\". Specificare uno di \"aggiungi\" o \"rimuovi\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Il canale ha già questo nome!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Niente da fare. Specifica almeno uno da 'aggiungere' o da 'eliminare'."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} ti ha iscritto al canale {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} ti ha iscritto ai seguenti canali:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "impossibile accedere al canale ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Puoi invitare altri utenti mirroring di Zephyr solo in canali privati."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} ha creato i canali seguenti: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} ha creato un nuovo canale {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "nuovi canali"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** canale creato da {user_name}. **Descrizione:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "Proprietà di sottoscrizione sconosciuta: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "Non iscritto all'id del canale {stream_id}"
@@ -5597,7 +6158,7 @@ msgstr "Non iscritto all'id del canale {stream_id}"
 msgid "Invalid json for submessage"
 msgstr "JSON invalido per sottomissione"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Non sei autorizzato a visualizzare questo file.
"
 
@@ -5619,114 +6180,114 @@ msgstr "Elenco 'a' vuoto"
 
 #: zerver/views/typing.py:58
 msgid "User has disabled typing notifications for direct messages"
-msgstr "L'utente ha disattivato le notifiche di digitazione per i messaggi diretti"
+msgstr "L'utente ha disattivato le notifiche di digitazione per i messaggi privati"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr "Questo file non esiste o è stato eliminato.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Tipo di token non valido"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Nome del file non valido"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Devi specificare un file da caricare"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Puoi caricare solo un file alla volta"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nessun nuovo dato fornito"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} ti ha aggiunto al gruppo {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} ti ha rimosso dal gruppo {group_name}."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "L'utente {user_id} è già membro di questo gruppo"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "Non esiste un membro '{user_id}' in questo gruppo utente"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Il gruppo utenti {group_id} è già un sottogruppo di questo gruppo."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "Il gruppo utente {user_group_id} è già un sottogruppo di uno dei sottogruppi passati."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Il gruppo utenti {group_id} non è un sottogruppo di questo gruppo."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Le modifiche dell'avatar sono disabilitate in questa organizzazione."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Le modifiche dell'indirizzo email sono disabilitate in questa organizzazione."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "default_language non valido"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "Suono di notifica non valido '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "Periodo di batching email : {seconds} secondi non valido"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "La tua password di Zulip è gestita in LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Password errata!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "Stai facendo troppi tentativi! Riprova tra {seconds} secondi."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "La nuova password è troppo semplice!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Devi caricare esattamente un avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "L'argomento non è silenziato"
 
@@ -5787,43 +6348,43 @@ msgstr "Gli indirizzi email monouso non sono consentiti in questa organizzazione
 msgid "Email '{email}' already in use"
 msgstr "Email '{email}' già in uso"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Token di accesso Zoom non valido"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Le credenziali di Zoom non sono state configurate"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Identificatore di sessione Zoom non valido"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Credenziali di Zoom non valide"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Creazione della chiamata Zoom fallita"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton non è configurato."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Firma non valida."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Errore di connessione al Big Blue Button server."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Errore di autenticazione al Big Blue Button server."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Il Big Blue Botton server ha restituito un errore imprevisto."
 
@@ -5856,11 +6417,11 @@ msgstr "Payload non valido"
 msgid "Unknown webhook request"
 msgstr "Richiesta webhook sconosciuta"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "L'argomento non può essere vuoto"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Il contenuto non può essere vuoto"
 
@@ -5887,7 +6448,7 @@ msgstr "Il webhook newrelic richiede che lo stato sia in [creato|attivato|ricono
 msgid "Events key is missing from payload"
 msgstr "La chiave degli eventi non è presente nel payload"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Impossibile gestire il payload Pivotal"
 
@@ -5904,83 +6465,105 @@ msgstr "Messaggio da Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "Azione webhook WordPress : {hook} sconosciuta"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "La tua esportazione dati è completa. [Visualizza e scarica le esportazioni]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Sottodominio non valido per bouncer di notifiche push"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "È necessario convalidare con la chiave API del server Zulip valida"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID non valido"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Tipo di token non valido"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} non è un hostname valido"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "ios_app_id mancante"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "User_id o user_uuid mancanti"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "Proprietà  {property} non valida"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr "Tipo di evento non valido."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "I dati sono fuori servizio."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "Rilevata duplicazione di registrazione."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
-msgstr "Impossibile migrare il cliente dal server ai domini. Si prega di contattare il supporto per assistenza."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
+msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "Dati di registro di audit malformati"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "È necessario reimpostare la password."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Parametri id_token mancanti"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP non valido"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Non puoi usare entrambi mobile_flow_otp e desktop_flow_otp insieme."
diff --git a/locale/it/translations.json b/locale/it/translations.json
index a054065dcc..f8822317b4 100644
--- a/locale/it/translations.json
+++ b/locale/it/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(file allegato)",
   "(forever)": "(per sempre)",
   "(hidden)": "(nascosto)",
-  "(no description)": "(nessuna descrizione)",
   "(no topic)": "(nessun argomento)",
   "(or )": "(O)",
   "(you)": "(tu)",
   "({message_retention_days} days)": "({message_retention_days} giorni)",
   "/dark (Switch to the dark theme)": "/dark (Attiva il tema scuro)",
   "/light (Switch to light theme)": "/light (Passa al tema chiaro)",
-  "/me is excited (Display action text)": "/me è eccitato (Visualizza il testo dell'azione)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Dove dovremmo andare a pranzo oggi? (Crea un sondaggio)",
-  "/todo (Create a todo list)": "/todo (Crea una lista di cose da fare)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 giorno",
   "1 hour": "1 ora",
   "1 week": "1 settimana",
@@ -28,7 +27,7 @@
   "6 hours": "6 ore",
   "Total messages: {total_messages}": "Messaggi totali: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} verrà rimosso dai messaggi in cui è stato condiviso. Questa azione non può essere annullata.
",
-  "Stream will be announced in #{notifications_stream}.
": "Il canale sarà annunciato in #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Stai cercando messaggi che sono stati inviati da più di una persona, il che non è possibile.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Stai cercando messaggi che appartengono a più di un canale, il che non è possibile.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Stai cercando messaggi che appartengono a più di un argomento, il che non è possibile.
",
@@ -38,7 +37,7 @@
   "{name} is not subscribed to this stream. They will not be notified unless you subscribe them.": "{name} non è iscritto a questo canale. Non riceverà notifiche a meno che tu non lo iscriva.",
   "{username} has {number_of_invites_by_user} unexpired invitations.": "{username} ha {number_of_invites_by_user} inviti non scaduti.",
   "Subscribe": "Iscriviti",
-  "Click here to learn about exporting private streams and direct messages.": "Clicca qui per saperne di più sulla esportazione di canali privati e messaggi diretti.",
+  "Click here to learn about exporting private streams and direct messages.": "Clicca qui per saperne di più sulla esportazione di canali privati e messaggi privati.",
   "Upgrade for more space.": "Fai l'upgrade per ottenere più spazio.",
   " to add a new line": " per aggiungere una nuova riga",
   " to send": " inviare",
@@ -76,6 +75,7 @@
   "Activity unknown": "Attività sconosciuta",
   "Add": "Aggiungi",
   "Add GIF": "Aggiungi GIF",
+  "Add a description": "",
   "Add a new alert word": "Aggiungi avviso parola",
   "Add a new bot": "Aggiungi nuovo bot",
   "Add a new code playground": "Aggiungi nuovo codice playgroud",
@@ -129,7 +129,7 @@
   "Alert words": "Parole con avviso",
   "Alert words allow you to be notified as if you were @-mentioned when certain words or phrases are used in Zulip. Alert words are not case sensitive.": "Gli allarmi parola ti consentono di essere avvisato come se fossi @ menzionato, quando determinate parole o frasi vengono utilizzate in Zulip. Le parole di avviso non fanno distinzione tra maiuscole e minuscole.",
   "Alerted messages": "Messaggi di allerta",
-  "All direct messages": "Tutti i messaggi diretti",
+  "All direct messages": "Tutti i messaggi privati",
   "All groups": "Tutti i gruppi",
   "All messages": "Tutti i messaggi",
   "All messages including muted streams": "Tutti i messaggi inclusi i canali silenziati",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Email del bot",
   "Bot email (a-z, 0-9, and dashes only)": "Email bot (a-z, 0-9, e solo trattini)",
+  "Bot is deactivated": "",
   "Bot owner": "Proprietario del bot",
   "Bot type": "Tipo di bot",
   "Bots": "Bot",
@@ -257,9 +258,9 @@
   "Close this dialog window": "Chiudi questa finestra di dialogo",
   "Code": "Codice",
   "Code playgrounds": "Codice playgrounds",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "I code playground sono ambienti di sviluppo interattivi all'interno del browser, come replit, progettati per semplificare la modifica e il debug del codice. I blocchi di codice Zulip contrassegnati con un linguaggio di programmazione avranno un pulsante visibile al passaggio del mouse che consente agli utenti di aprire il blocco di codice sul sito Code Playground.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Comprimi componi",
-  "Collapse direct messages": "Comprimi i messaggi diretti",
+  "Collapse direct messages": "Comprimi i messaggi privati",
   "Collapse message": "Comprimi messaggio",
   "Collapse views": "Comprimi le visualizzazioni",
   "Collapse/show selected message": "Comprimi / mostra il messaggio selezionato",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configura i metodi di autenticazione per la tua organizzazione.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configura i canali di default a cui vengono iscritti i nuovi utenti quando entrano nella tua organizzazione",
   "Confirm": "Confermare",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Prendi in considerazione la ricerca in tutti i canali pubblici.",
   "Contact a moderator to resolve this topic.": "Contatta un moderatore per risolvere questo argomento.",
   "Contact a moderator to unresolve this topic.": "Contatta un moderatore per risolvere questo argomento.",
@@ -292,6 +294,7 @@
   "Copy code": "Copia codice",
   "Copy link": "Copia link",
   "Copy link to message": "Copia link al messaggio",
+  "Copy link to profile": "",
   "Copy link to topic": "Copia il link all'argomento",
   "Copy mention syntax": "Copia la sintassi della menzione",
   "Copy version": "Copia versione",
@@ -308,7 +311,7 @@
   "Create user group": "Crea gruppo utenti",
   "Creating group...": "Creazione gruppo...",
   "Creating stream...": "Sto creando il canale...",
-  "Currently viewing all direct messages.": "Attualmente sto visualizzando tutti i messaggi diretti.",
+  "Currently viewing all direct messages.": "Attualmente sto visualizzando tutti i messaggi privati.",
   "Currently viewing all messages.": "Attualmente sto visualizzando tutti i messaggi.",
   "Currently viewing the entire stream.": "Attualmente sto visualizzando l'intero canale.",
   "Custom": "Personalizzato",
@@ -320,11 +323,11 @@
   "Custom profile fields": "Campi profilo personalizzati",
   "Custom time": "Orario personalizzato",
   "Cycle between stream narrows": "Cicla tra le selezioni per canale",
-  "DIRECT MESSAGES": "MESSAGGI DIRETTI",
-  "DM": "MD",
-  "DMs and mentions": "MDs e menzioni",
-  "DMs, mentions, and alerts": "MD, menzioni e avvisi",
-  "DMs, mentions, and followed topics": "MDs, menzioni e argomenti seguiti",
+  "DIRECT MESSAGES": "MESSAGGI PRIVATI",
+  "DM": "MP",
+  "DMs and mentions": "MPs e menzioni",
+  "DMs, mentions, and alerts": "MP, menzioni e avvisi",
+  "DMs, mentions, and followed topics": "MPs, menzioni e argomenti seguiti",
   "Dark": "Dark",
   "Dark theme": "Tema scuro",
   "Dark theme logo": "Logo a tema scuro",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Cancella tutte le bozze",
   "Delete all selected drafts": "Elimina tutte le bozze selezionate",
   "Delete code playground?": "Elimina codice parco giochi?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Eliminare il campo del profilo personalizzato?",
   "Delete data export?": "Eliminare l'esportazione dei dati?",
   "Delete draft": "Cancella bozza",
@@ -392,11 +396,11 @@
   "Detailed keyboard shortcuts documentation": "Documentazione dettagliata delle scorciatoie da tastiera",
   "Detailed message formatting documentation": "Documentazione dettagliata della formattazione del messaggio",
   "Detailed search filters documentation": "Documentazione dettagliata dei filtri di ricerca",
-  "Direct message": "Messaggio diretto",
-  "Direct message to me": "Messaggio diretto a me",
-  "Direct messages": "Messaggi diretti",
-  "Direct messages are disabled in this organization.": "I messaggi diretti sono disattivati in questa organizzazione.",
-  "Direct messages disabled": "Messaggi diretti disattivati",
+  "Direct message": "Messaggio privato",
+  "Direct message to me": "Messaggio privato a me",
+  "Direct messages": "Messaggi privati",
+  "Direct messages are disabled in this organization.": "I messaggi privati sono disattivati in questa organizzazione.",
+  "Direct messages disabled": "Messaggi privati disattivati",
   "Disable": "Disattivare",
   "Disable notifications?": "Disattivare le notifiche?",
   "Disabled": "Disabilitato",
@@ -413,7 +417,6 @@
   "Domain": "Dominio",
   "Don’t allow disposable email addresses": "Non accettare indirizzi email usa e getta",
   "Download": "Scarica",
-  "Download .zuliprc": "Scarica .zuliprc",
   "Download botserverrc": "Scarica botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Scarica la configurazione di tutti i bot webhook attivi in uscita nel formato Zulip Botserver.",
   "Download file": "Scarica file",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Istruzione (a scopo di lucro)",
   "Education (non-profit)": "Istruzione (senza scopo di lucro)",
   "Effect": "Effetto",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "Indirizzo email",
   "Email address changes are disabled in this organization.": "Le modifiche dell'indirizzo email sono disabilitate in questa organizzazione.",
@@ -497,7 +501,7 @@
   "Exclude messages with topic .": "Escludi messaggi con argomento .",
   "Exit search": "Esci dalla ricerca",
   "Expand compose": "Espandi componi",
-  "Expand direct messages": "Espandi i messaggi diretti",
+  "Expand direct messages": "Espandi i messaggi privati",
   "Expand message": "Espandi il messaggio",
   "Expand views": "Espandi le visualizzazioni",
   "Expires at": "Scade il",
@@ -550,7 +554,7 @@
   "Follow": "Segui",
   "Followed": "Seguito",
   "Followed topics": "Argomenti seguiti",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Ad esempio, per configurare un code playground per i blocchi di codice contrassegnati come Python, puoi impostare:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Per altri esempi e dettagli tecnici, consulta la documentazione del Centro assistenza sull'aggiunta di code playground.",
   "For more examples, see the help center documentation on adding linkifiers.": "Per altri esempi, consulta la documentazione del Centro assistenza sull'aggiunta di linkifier.",
   "Forgot it?": "Dimenticato?",
@@ -574,7 +578,7 @@
   "Go to #{display_recipient}": "Vai a #{display_recipient}",
   "Go to #{display_recipient} > {topic}": "Vai a #{display_recipient} > {argomento}",
   "Go to conversation": "Vai alla conversazione",
-  "Go to direct messages with {display_reply_to_for_tooltip}": "Vai ai messaggi diretti con {display_reply_to_for_tooltip}",
+  "Go to direct messages with {display_reply_to_for_tooltip}": "Vai ai messaggi privati con {display_reply_to_for_tooltip}",
   "Go to home view": "Vai alla vista principale",
   "Go to stream settings": "Vai alle impostazioni del canale",
   "Got it": "Ce l'ho ",
@@ -606,11 +610,13 @@
   "Image": "Immagine",
   "In a meeting": "In riunione",
   "In muted streams, stream notification settings apply only to unmuted topics.": "Nei canali  silenziati, le impostazioni di notifica dei canali si applicano solo agli argomenti non silenziati.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Non attivo",
   "Inactive bots": "Bot inattivi",
   "Inbox": "Posta in arrivo",
-  "Include DMs": "Includi MD",
-  "Include content of direct messages in desktop notifications": "Includi il contenuto dei messaggi diretti nelle notifiche desktop",
+  "Include DMs": "Includi MP",
+  "Include content of direct messages in desktop notifications": "Includi il contenuto dei messaggi privati nelle notifiche desktop",
   "Include message content in message notification emails": "Includi il contenuto dei messaggi nelle notifiche via email",
   "Include organization name in subject of message notification emails": "Includere il nome dell'organizzazione nell'oggetto delle e-mail di notifica dei messaggi",
   "Includes muted streams and topics": "Include canali e argomenti silenziati",
@@ -675,9 +681,9 @@
   "Leave group {name}": "Lascia il gruppo {name}",
   "Leave {group_name}": "Lascia {group_name}",
   "Let others see when I've read messages": "Consenti agli altri di vedere quando ho letto i messaggi",
-  "Let recipients see when I'm typing direct messages": "Consenti ai destinatari di vedere quando scrivo messaggi diretti",
+  "Let recipients see when I'm typing direct messages": "Consenti ai destinatari di vedere quando scrivo messaggi privati",
   "Let recipients see when I'm typing messages in streams": "Fai in modo che i destinatari vedano quando sto scrivendo messaggi nei canali.",
-  "Let recipients see when a user is typing direct messages": "Consenti ai destinatari di vedere quando un utente sta scrivendo messaggi diretti.",
+  "Let recipients see when a user is typing direct messages": "Consenti ai destinatari di vedere quando un utente sta scrivendo messaggi privati.",
   "Let recipients see when a user is typing stream messages": "Fai in modo che i destinatari vedano quando un utente sta digitando messaggi nei canali",
   "Light": "Chiaro",
   "Light theme": "Tema chiaro",
@@ -704,9 +710,11 @@
   "Manage this bot": "Gestisci questo bot",
   "Manage this user": "Gestisci questo utente",
   "Manage user": "Gestisci utente",
+  "Manage your API key": "",
   "March": "Marzo",
   "Mark all messages as read": "Segna tutti i messaggi come letti",
   "Mark all messages as read?": "Contrassegnare tutti i messaggi come letti?",
+  "Mark all messages as unread": "",
   "Mark as read": "Segna come letto",
   "Mark as resolved": "Segna come risolto",
   "Mark as unread from here": "Segna come da leggere da qui",
@@ -722,6 +730,7 @@
   "Mentioned in": "Menzionato in",
   "Mentions": "Menzioni",
   "Menus": "Menu",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Messaggio #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Messaggio #{stream_name} > {topic_name}",
   "Message actions": "Azioni sui messaggi",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Messaggio {recipient_label}",
   "Message {recipient_names}": "Messaggio {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Messaggio {recipient_name} ({recipient_status})",
+  "Messages": "Messaggi",
   "Messages in all public streams": "Messaggi in tutti i canali pubblici",
   "Messages sent by you": "Messaggi inviati da te.",
   "Messages sent by {sender}": "Messaggi inviati da {sender}",
@@ -774,12 +784,12 @@
   "Muted users": "Utenti silenziati",
   "Name": "Nome",
   "Name changes are disabled in this organization. Contact an administrator to change your name.": "Le modifiche del nome sono disabilitate in questa organizzazione. Contatta un amministratore per cambiare il tuo nome.",
-  "Narrow to all direct messages": "Limitare a tutti i messaggi diretti",
+  "Narrow to all direct messages": "Limitare a tutti i messaggi privati",
   "Narrow to all unmuted messages": "Limita per tutti i messaggi ai quali ai tolto il silenzioso",
   "Narrow to current compose box recipient": "Limita al destinatario della casella di composizione corrente",
-  "Narrow to direct messages that include .": "Limita ai messaggi diretti che includono .",
-  "Narrow to direct messages with .": "Limita ai messaggi diretti con .",
-  "Narrow to direct messages.": "Limita ai messaggi diretti.",
+  "Narrow to direct messages that include .": "Limita ai messaggi privati che includono .",
+  "Narrow to direct messages with .": "Limita ai messaggi privati con .",
+  "Narrow to direct messages.": "Limita ai messaggi privati.",
   "Narrow to just message ID .": "Restringi unicamente all'ID messaggio .",
   "Narrow to messages containing images.": "Limita per messaggi contenenti immagini.",
   "Narrow to messages containing links.": "Limita per messaggi contenenti dei link.",
@@ -791,7 +801,7 @@
   "Narrow to messages that mention you.": "Limita per messaggi  che ti menzionano.",
   "Narrow to messages with alert words.": "Limita per i messaggi con parola con alert.",
   "Narrow to messages with topic .": "Restringi a messaggi con argomento .",
-  "Narrow to next unread direct message": "LImita al successivo messaggio diretto non letto",
+  "Narrow to next unread direct message": "LImita al successivo messaggio privato non letto",
   "Narrow to next unread topic": "Limita al prossimo argomento non letto",
   "Narrow to starred messages.": "Restringi ai messaggi speciali.",
   "Narrow to stream from topic view": "Limita a canale per vedere l'argomento",
@@ -804,7 +814,8 @@
   "Never ask on this computer": "Non chiedere mai su questo computer",
   "Never expires": "Non scade mai",
   "New": "Nuovo",
-  "New direct message": "Nuovo messaggio diretto",
+  "New direct message": "Nuovo messaggio privato",
+  "New direct message from {sender_full_name}": "",
   "New email": "Nuova email",
   "New message": "Nuovo messaggio",
   "New option": "Nuova opzione",
@@ -818,28 +829,23 @@
   "New user announcements": "Nuovi annunci utente",
   "New user notifications": "Notifiche per nuovi utenti",
   "Next message": "Prossimo messaggio",
-  "Next unread direct message": "Prossimo messaggio diretto non letto",
+  "Next unread direct message": "Prossimo messaggio privato non letto",
   "Next unread followed topic": "Argomento seguito successivo non letto",
   "Next unread topic": "Prossimo argomento non letto",
-  "No bots found.": "Nessun bot trovato.",
+  "No active users.": "",
   "No bots match your current filter.": "Nessun bot corrisponde al tuo filtro.",
   "No conversations match your filters.": "Nessuna conversazione corrisponde ai tuoi filtri.",
-  "No custom emojis found.": "Nessuna emoji personalizzata trovata.",
   "No custom emojis match your current filter.": "Nessuna emoji personalizzata corrisponde al tuo filtro attuale.",
   "No custom profile field configured for this organization.": "Nessun campo personalizzato , per il profilo,  configurato per questa organizzazione.",
-  "No deactivated users found.": "Non ci sono utenti disattivati.",
-  "No default streams found.": "Non ci sono canali di default.",
   "No default streams match your current filter.": "Nessun canale predefinito corrisponde al filtro attuale.",
   "No description.": "Nessuna descrizione.",
   "No drafts selected": "Nessuna bozza selezionata",
   "No drafts.": "Nessuna bozza.",
-  "No exports found.": "Nessuna esportazione trovata.",
   "No group members match your current filter.": "Nessun membro del gruppo corrisponde al filtro attuale.",
-  "No invites found.": "Nessun invito trovato.",
   "No invites match your current filter.": "Nessun invito corrisponde al tuo filtro.",
   "No language set": "Nessuna lingua impostata",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "Nessun linkifiers corrispondono al tuo filtro attuale.",
-  "No linkifiers set.": "Nessuno linkifiers settati.",
   "No matching results": "Nessun risultato corrispondente",
   "No matching streams": "Nessuno canali corrispondente",
   "No matching users.": "Nessun utente corrispondente.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Nessun argomento è contrassegnato come risolto.",
   "No topics match your current filter.": "Nessun argomento corrisponde al tuo attuale filtro.",
   "No uploaded files match your current filter.": "Nessun file caricato corrisponde al filtro corrente.",
+  "No user found": "",
   "No user group subscriptions.": "Nessuna iscrizione a gruppi di utenti.",
   "No user groups": "Nessun gruppo di utenti",
   "No user to subscribe.": "Nessun utente da iscrivere.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Nessuno in questa organizzazione Zulip sarà in grado di vedere questo indirizzo email.",
   "Non-profit (registered)": "Senza scopo di lucro (registrato)",
   "None": "Nessuno",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Tutti i bot che mantieni saranno disabilitati.",
   "Note that organizations are limited to five exports per week.": "Si noti che le organizzazioni sono limitate a cinque esportazioni a settimana.",
   "Nothing to preview": "Nulla da mostrare",
@@ -932,6 +940,7 @@
   "Other permissions": "Altri permessi",
   "Other settings": "Altre impostazioni",
   "Other users in this Zulip organization will be able to see this email address.": "Gli altri utenti di questa organizzazione Zulip potranno vedere questo indirizzo email.",
+  "Others": "",
   "Out sick": "Ammalato",
   "Outgoing webhook message format": "Formato messaggio webhook in uscita",
   "Override default emoji?": "Sostituire le emoji predefinite?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Richiedi argomenti nei messaggi del canale",
   "Research": "Ricerca",
   "Resend": "Rispedisci",
-  "Resend invitation": "Invia di nuovo l'invito",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Errore nel reinvio. Per favore ricarica e riprova.",
+  "Reset to default notifications": "",
   "Reset zoom": "Resetta zoom",
   "Restore draft": "Ritorna alla bozza",
   "Restrict email domains of new users?": "Limita i domini email dei nuovi utenti?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Cerca  nell'argomento o nel contenuto del messaggio.",
   "Search people": "Cerca persone",
   "Search results": "Risultati della ricerca",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Guarda come configurare la mail.",
   "Select a stream": "Seleziona un canale",
   "Select a stream below or change topic name.": "Seleziona un canale di seguito o cambia il nome dell'argomento.",
@@ -1074,7 +1085,7 @@
   "Send automated notice to old topic": "Invia avviso automatico al vecchio argomento",
   "Send digest emails when I'm away": "Invia email automatiche quando sono assente",
   "Send digest emails when user is away": "Invia email di riepilogo quando l'utente è assente",
-  "Send direct message": "Invia messaggio diretto",
+  "Send direct message": "Invia messaggio privato",
   "Send email notifications for new logins to my account": "Invia notifiche email per i nuovi login al mio account",
   "Send emails introducing Zulip to new users": "Invia email per presentare Zulip ai nuovi utenti",
   "Send me Zulip's low-traffic newsletter (a few emails a year)": "Inviami la newsletter di Zulip (solo alcune email all'anno)",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Mostra il numero di messaggi speciali",
   "Show status text": "Mostra testo dello stato",
   "Show unread counts for": "Mostra conteggi non letti per",
-  "Show/change your API key": "Mostra/modifica la tua chiave API",
   "Showing messages since {time_string}.": "Mostrando messaggi dal {time_string}.",
   "Sign up": "Iscriviti",
   "Silent mentions do not trigger notifications.": "Le menzioni silenziose non attivano le notifiche.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "L'indirizzo email del mittente",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "Il canale #{stream_name} non esiste. Gestisci le tue iscrizioni sulla tua pagina Canali.",
   "The stream description cannot contain newline characters.": "La descrizione del canale non può contenere caratteri di nuova riga.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "La loro password sarà cancellata dal nostro sistema, e tutti i bot che mantengono saranno disabilitati.",
   "Theme": "Tema",
+  "There are no bots.": "",
   "There are no current alert words.": "Al momento non ci sono parole di avviso .",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Non ci sono messaggi qui.",
   "There are no streams you can view in this organization.": "Non ci sono canali che puoi visualizzare in questa organizzazione.",
   "There are no unread messages in your inbox.": "Non ci sono messaggi non letti nella tua casella di posta.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Questo bot non può essere disattivato.",
   "This bot cannot be edited.": "Questo bot non può essere modificato.",
   "This bot has been deactivated.": "Questo bot è stato disattivato.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "Questa conversazione potrebbe avere messaggi aggiuntivi non mostrati in questa visualizzazione.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Questa organizzazione demo verrà eliminata automaticamente tra {days_remaining} giorni, a meno che non venga convertita in un'organizzazione permanente.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "Questa funzionalità è disponibile su Zulip Cloud Plus. Esegui l'upgrade per accedere.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Questo cancellerà il campo  del profilo per  utenti.",
   "This will delete the  profile field for 1 user.": "Questo cancellerà il campo profilo   per 1 utente.",
   "This will delete the  profile field for  users.": "Questo cancellerà il campo profilo  per  utenti.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Giovedì",
   "Time": "Ora",
   "Time format": "Formato ora",
@@ -1240,6 +1259,7 @@
   "Today": "Oggi",
   "Today at {time}": "Oggi alle {time}",
   "Toggle first emoji reaction on selected message": "Attiva o disattiva la prima reazione emoji sul messaggio selezionato",
+  "Toggle preview mode": "",
   "Toggle subscription": "Cambia iscrizione",
   "Toggle the gear menu": "Attiva o disattiva il menu",
   "Toggle topic mute": "Inverti silenziamento dell'argomento",
@@ -1335,7 +1355,7 @@
   "Version {zulip_version}": "Versione {zulip_version}",
   "View all streams": "Visualizza tutti i canali",
   "View all user groups": "Visualizza tutti i gruppi degli utenti",
-  "View direct messages": "Visualizza i messaggi diretti",
+  "View direct messages": "Visualizza i messaggi privati",
   "View drafts": "Visualizza le bozze",
   "View edit and move history": "Visualizza modifica e sposta cronologia",
   "View edit history": "Mostra storia delle modifiche",
@@ -1391,7 +1411,7 @@
   "Who can post to the stream?": "Chi può postare nel canale?",
   "Who can send email invitations to new users": "Chi può inviare inviti via email ai nuovi utenti",
   "Who can unsubscribe others from this stream?": "Chi può annullare l'iscrizione di altri a questo canale?",
-  "Who can use direct messages": "Chi può usare i messaggi diretti",
+  "Who can use direct messages": "Chi può usare i messaggi privati",
   "Who can view all other users in the organization": "Chi può visualizzare tutti gli altri utenti nell'organizzazione",
   "Why not start a conversation with yourself?": "Perché non iniziare una conversazione con te stesso?",
   "Why not start the conversation?": "Perché non iniziare una conversazione?",
@@ -1411,9 +1431,9 @@
   "You and": "Tu e",
   "You and ": "Tu e ",
   "You and {recipients}": "Tu e {recipients}",
-  "You are about to disable all notifications for direct messages, @‑mentions and alerts, which may cause you to miss messages that require your timely attention. If you would like to temporarily disable all desktop notifications, consider turning on \"Do not disturb\" instead.": "Stai per disattivare tutte le notifiche per i messaggi diretti,@‑ le menzioni e gli avvisi, il che potrebbe farti perdere messaggi che richiedono la tua attenzione tempestiva. Se desideri disattivare temporaneamente tutte le notifiche desktop, considera l'opzione  \"Non disturbare\" invece.",
+  "You are about to disable all notifications for direct messages, @‑mentions and alerts, which may cause you to miss messages that require your timely attention. If you would like to temporarily disable all desktop notifications, consider turning on \"Do not disturb\" instead.": "Stai per disattivare tutte le notifiche per i messaggi privati,@‑ le menzioni e gli avvisi, il che potrebbe farti perdere messaggi che richiedono la tua attenzione tempestiva. Se desideri disattivare temporaneamente tutte le notifiche desktop, considera l'opzione  \"Non disturbare\" invece.",
   "You are not a member of any user groups.": "Non sei un membro di alcun gruppo utente.",
-  "You are not allowed to send direct messages in this organization.": "Non sei autorizzato a inviare messaggi diretti in questa organizzazione.",
+  "You are not allowed to send direct messages in this organization.": "Non sei autorizzato a inviare messaggi privati in questa organizzazione.",
   "You are not currently subscribed to this stream.": "Non sei iscritto a questo canale.",
   "You are not subscribed to any streams.": "Non sei iscritto a nessun canale.",
   "You are not subscribed to stream ": "Non sei iscritto al canale ",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "Non hai i permessi per aggiungere altri utenti ai canali di questa organizzazione.",
   "You do not have permission to join this group.": "Non hai il permesso di unirti a questo gruppo.",
   "You do not have permission to leave this group.": "Non hai il permesso di lasciare questo gruppo.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Non sei autorizzato a spostare alcuni dei messaggi in questo argomento. Contatta un moderatore per spostare tutti i messaggi.",
   "You do not have permission to post in this stream.": "Non hai l'autorizzazione per pubblicare in questo canale.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "Non sei autorizzato a risolvere argomenti con messaggi più vecchi di {N, plural, one {# day} other {# days}} in questa organizzazione.",
@@ -1450,7 +1471,7 @@
   "You do not have permission to use @{stream_wildcard_mention} mentions in this stream.": "Non hai il permesso di utilizzare le menzioni @{stream_wildcard_mention} in questo canale.",
   "You do not have permissions to generate invite links in this organization.": "Non hai i permessi per generare link di invito in questa organizzazione.",
   "You do not have permissions to send email invitations in this organization.": "Non hai i permessi per inviare inviti via email in questa organizzazione.",
-  "You don't have any direct message conversations yet.": "Non hai ancora conversazioni con messaggi diretti.",
+  "You don't have any direct message conversations yet.": "Non hai ancora conversazioni con messaggi privati.",
   "You follow this topic": "Segui questo argomento",
   "You get": "Ottieni",
   "You have at least {unread_msgs_count} unread messages.": "Hai almeno {unread_msgs_count} messaggi non letti.",
@@ -1460,19 +1481,19 @@
   "You have muted .": "Tu hai silenziato .",
   "You have muted this topic": "Hai silenziato questo argomento",
   "You have no active bots.": "Non hai bot attivi.",
-  "You have no direct messages including {person} yet.": "Non hai ancora messaggi diretti che includono {person}.",
-  "You have no direct messages with these users yet.": "Non hai ancora messaggi diretti con questi utenti.",
-  "You have no direct messages with {person} yet.": "Non hai ancora messaggi diretti con {person}.",
-  "You have no direct messages yet!": "Non hai ancora messaggi diretti!",
+  "You have no direct messages including {person} yet.": "Non hai ancora messaggi privati che includono {person}.",
+  "You have no direct messages with these users yet.": "Non hai ancora messaggi privati con questi utenti.",
+  "You have no direct messages with {person} yet.": "Non hai ancora messaggi privati con {person}.",
+  "You have no direct messages yet!": "Non hai ancora messaggi privati!",
   "You have no inactive bots.": "Non hai bot inattivi.",
-  "You have no more unread direct messages.": "Non hai più messaggi diretti non letti.",
+  "You have no more unread direct messages.": "Non hai più messaggi privati non letti.",
   "You have no more unread topics.": "Non hai più argomenti non letti.",
   "You have no starred messages.": "Non hai messaggi speciali.",
   "You have no unread messages in followed topics.": "Non hai messaggi non letti negli argomenti seguiti.",
   "You have no unread messages!": "Non hai messaggi non letti!",
   "You have not configured any topics yet.": "Non hai ancora configurato alcun argomento.",
   "You have not muted any users yet.": "Non hai ancora silenziato alcun utente.",
-  "You have not sent any direct messages to yourself yet!": "Non hai ancora inviato messaggi diretti a te stesso!",
+  "You have not sent any direct messages to yourself yet!": "Non hai ancora inviato messaggi privati a te stesso!",
   "You have not uploaded any files.": "Non hai caricato nessun file.",
   "You have unmuted this topic": "Hai tolto il mute a questo argomento",
   "You haven't been mentioned yet!": "Non sei stato ancora menzionato!",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Zulip Server {display_version}",
   "Zulip Server {display_version} (modified)": "Zulip Server {display_version} (modificata)",
   "Zulip Server {display_version} (patched)": "Zulip Server {display_version} (pecciato)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "Zulip ti permette di configurare le notifiche per ogni argomento. Puoi anche seguire automaticamente o disattivare la modalità silenziosa per gli argomenti che avvii o in cui partecipi.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Zulip ti consente di disattivare l'audio di argomenti e canali per evitare di ricevere messaggi di notifica che non ti interessano. La disattivazione di un canale disattiva in modo efficace tutti gli argomenti in quel canale. Puoi anche disattivare manualmente l'audio di un argomento in un canale con audio disattivato o riattivare l'audio di un argomento in un canale con audio disattivato. Per saperne di più.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip ha bisogno di inviare e-mail per confermare gli indirizzi degli utenti e inviare notifiche.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip ha bisogno del tuo permesso per abilitare le notifiche desktop.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Le traduzioni di Zulip sono fornite dalla nostra straordinaria comunità di traduttori volontari. Se desideri aiutare, consulta  le linee guida per la traduzione di Zulip.",
@@ -1526,11 +1546,11 @@
   "cookie": "cookie",
   "deactivated": "disattivato",
   "deprecated": "deprecato",
-  "direct messages with yourself": "messaggi diretti con te stesso",
-  "direct messages with {recipient}": "messaggi diretti con {recipient}",
+  "direct messages with yourself": "messaggi privati con te stesso",
+  "direct messages with {recipient}": "messaggi privati con {recipient}",
   "does not apply to administrators": "non si applica agli amministratori",
   "does not apply to moderators and administrators": "non si applica a moderatori e amministratori",
-  "group direct messages with {recipient}": "raggruppare i messaggi diretti con {recipient}",
+  "group direct messages with {recipient}": "raggruppare i messaggi privati con {recipient}",
   "guest": "ospite",
   "he/him": "lui/lui",
   "invisible mode off": "modalità invisibile disattivata",
@@ -1541,6 +1561,9 @@
   "more topics": "Altri argomenti",
   "she/her": "lei/lei",
   "they/them": "loro/loro",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Fatto! {N} messaggi contrassegnati come letti.} many {Fatto! {N} messaggi contrassegnati come letti.} other {Fatto! {N} messaggi contrassegnati come letti.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Fatto! {N} messaggio contrassegnato come non letto.} many {Fatto! {N} messaggi contrassegnati come non letti.} other {Fatto! {N} messaggi contrassegnati come non letti.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {Utente invitato con successo.} many {Utenti invitati con successo.} other {Utenti invitati con successo.}}",
diff --git a/locale/ja/LC_MESSAGES/django.po b/locale/ja/LC_MESSAGES/django.po
index 79fdd4e378..b2a1d9e7ef 100644
--- a/locale/ja/LC_MESSAGES/django.po
+++ b/locale/ja/LC_MESSAGES/django.po
@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: oribe1115, 2023\n"
 "Language-Team: Japanese (http://app.transifex.com/zulip/zulip/language/ja/)\n"
@@ -29,57 +29,51 @@ msgstr ""
 "Language: ja\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "ゲストに許可しない"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "無効な組織"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "公開ストリーム"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "非公開ストリーム"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "ダイレクトメッセージ"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "グループのダイレクトメッセージ"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "開始時刻が終了時刻より遅いです。 開始:{start}、終了:{end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "解析用データが利用できません。サーバー管理者に連絡してください。"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "不正なパラメーター"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -88,7 +82,7 @@ msgid ""
 "users to join."
 msgstr "Zulip ライセンスが残っておらず、新しいユーザーを受け入れることができません。[ライセンス数を増やす]({billing_page_link})か、[最近利用していないユーザーを非アクティブ化]({deactivate_user_help_page_link})すると、複数のユーザーを追加できるようになります。"
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -97,7 +91,7 @@ msgid ""
 "join."
 msgstr "残りの Zulipライセンスが1件になりました。 [ライセンス数を増やす]({billing_page_link})か、[最近利用していないユーザーを非アクティブ化]({deactivate_user_help_page_link})すると、複数のユーザーを追加できるようになります。"
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -106,7 +100,7 @@ msgid ""
 "join."
 msgstr "残りの Zulipライセンスが2件になりました。 [ライセンス数を増やす]({billing_page_link})か、[最近利用していないユーザーを非アクティブ化]({deactivate_user_help_page_link})すると、複数のユーザーを追加できるようになります。"
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -115,7 +109,7 @@ msgid ""
 "join."
 msgstr "残りの Zulipライセンスが3件になりました。 [ライセンス数を増やす]({billing_page_link})か、[最近利用していないユーザーを非アクティブ化]({deactivate_user_help_page_link})すると、複数のユーザーを追加できるようになります。"
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -124,11 +118,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Zulip ライセンスが残っておらず、新しいユーザー({email}) を受け入れることができません。[ライセンス数を増やす]({billing_page_link})か、[最近利用していないユーザーを非アクティブ化]({deactivate_user_help_page_link})すると、複数のユーザーを追加できるようになります。"
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "現在、全てのZulipライセンスが使用されています。"
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -144,124 +138,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} / 末尾 {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "不明なお支払い方法です。{email} にお問い合わせください。"
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "エラーが発生しました。{email} に問い合わせてください。"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "エラーが発生しました。ページを再読み込みしてください。"
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "エラーが発生しました。少し待ってからもう一度試してください。"
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "プランを更新できません。このプランは終了し、新しいプランに置き換えられました。"
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "プランを更新できません。このプランは終了しました。"
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "ライセンスを手動で更新できません。現在、自動ライセンス管理のプランを使用しています。"
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "現在の支払い期間のライセンスは下げられません"
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "変更するものがありません"
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "セッションが見つかりません"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "請求管理者または組織オーナーである必要があります。"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -269,54 +263,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "不正なパラメーター"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "エラー"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "メソッドは許可されていません (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "ページが見つかりません(404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -325,8 +326,41 @@ msgid ""
 "                        "
 msgstr "\n予期しないエラーの場合は、サポートにお問い合わせください。"
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "メソッドは許可されていません (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "内部のサーバーエラー"
 
@@ -431,7 +465,7 @@ msgstr "15日以内のアクティブユーザー"
 msgid "Total users"
 msgstr "すべてのユーザー数"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "ユーザー"
 
@@ -571,36 +605,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "リンクを正しくブラウザーにコピーしているか確認してください。リンクが正しい場合、おそらく私たち側の問題です。申し訳ございません。"
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "請求書"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "この画面を閉じる"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "キャンセル"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "確認"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "請求状況"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "%(retry_after)s 秒後に再試行できます。"
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "アップグレード"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -622,6 +752,451 @@ msgstr "カテゴリー"
 msgid "All"
 msgstr "全て"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "「Zulip」開発コミュニティ"
@@ -641,11 +1216,7 @@ msgstr "セルフホスターとして参加"
 msgid "Join as a contributor"
 msgstr "貢献する"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "請求状況"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -660,12 +1231,12 @@ msgstr "請求状況"
 msgid "Create organization"
 msgstr "組織を作成"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -698,51 +1269,48 @@ msgstr "教育用価格"
 msgid "View pricing"
 msgstr "料金設定を見る"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "ビジネスのためのZulip"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "サポートに問い合わせ"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "フォーム"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "組織"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "件名"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "メッセージ"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "送信"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "ご連絡ありがとうございます。"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "ご連絡ありがとうございます!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "早急にご返信いたしますので、しばらくお待ちください。"
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -758,14 +1326,6 @@ msgstr "アバター"
 msgid "Try Zulip now"
 msgstr "Zulipを試す"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "アップグレード"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -813,7 +1373,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "登録"
 
@@ -846,8 +1406,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "ログイン"
 
@@ -880,26 +1440,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Zulipに接続できません"
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "更新は遅れる場合があります。"
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "すぐに再試行します…"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "いますぐ"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "メッセージ"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "認証用サブドメインのエラー"
@@ -1122,21 +1678,21 @@ msgstr "ゲストユーザー"
 msgid "Normal users"
 msgstr "一般ユーザー"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "閉じる"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "アップデート"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2359,7 +2915,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2379,7 +2935,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2389,12 +2954,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "メールアドレス"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "アカウントを探す"
 
@@ -2426,7 +2991,7 @@ msgstr "インテグレーション"
 msgid "Desktop & mobile apps"
 msgstr "デスクトップアプリとモバイルアプリ"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "新しい組織"
 
@@ -2794,12 +3359,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2808,11 +3369,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "このアクションを実行できる頻度の上限に達しました。"
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "%(retry_after)s 秒後に再試行できます。"
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2981,6 +3537,22 @@ msgstr "何に興味がありますか?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Zulip の低頻度のニュースレターを受け取る(年に数回)"
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "パスワードをリセット"
@@ -3138,123 +3710,107 @@ msgid ""
 "                        "
 msgstr "\n                        またはZulip デスクトップアプリを使用することができます。\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "登録"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user}がZulipに登録しました。(合計:{user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user}はZulipへの招待を受け入れました"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "不正な順序マッピング"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "フィールドID {id} が見つかりませんでした"
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}'はデフォルトストリームなので'{group_name}'に追加できません"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "デフォルトストリームグループ「{group_name}」は存在します"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "ストリーム「{stream_name}」はデフォルトストリームグループ「{group_name}」に存在します"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "ストリーム「{stream_name}」はデフォルトストリームグループ「{group_name}」に存在しません"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "ユーザーの安全のため、1日に送信可能な招待数には制限があります。制限に達したため、招待状を送信できませんでした。"
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "あなたのアカウントはこの組織への招待を作成するには新しすぎます。組織管理者または経験のあるユーザーにお問い合わせください。"
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "いくつかのメールアドレスが検証されていないため、招待を送信しませんでした。"
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "誰も招待することができません"
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3284,72 +3840,72 @@ msgstr "ストリームの変更中にメッセージ内容を変更できませ
 msgid "Widgets cannot be edited."
 msgstr "ウィジェットを編集出来ません。"
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "組織のメッセージ編集を禁止しました"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "このメッセージを編集する権限がありません"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "このメッセージを編集できる時間制限が過ぎました"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user}がこのトピックを解決済みにしました"
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user}がこのトピックを未解決にしました"
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "{user}がこのトピックを{new_location}に移動しました"
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "{user}がメッセージを{new_location}に移動しました"
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "{user}がこのトピックを{old_location}に移動しました"
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{user}が{changed_messages_count}件のメッセージを{old_location}からここに移動しました。"
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "組織のメッセージ編集を禁止しました"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "このメッセージを編集する権限がありません"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "このメッセージを編集できる時間制限が過ぎました"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "このメッセージを移動する権限がありません"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3368,137 +3924,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "不正なメッセージ"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "メッセージをレンダリングできません"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "ちょうど一つのストリームを期待しています"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "ストリームのデータータイプが不正です"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "受信者のデータータイプが不正です"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "受信者リストはメールアドレスかユーザーIDのどちらかを含むことができますが、両方を含むことはできません。"
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "あなたのBot「{bot_identity}」がストリームID「{stream_id}」にメッセージを送ろうとしましたが、そのIDのストリームはありません。"
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "あなたのBot「{bot_identity}」がストリーム「{stream_name}」にメッセージを送信しようとしましたが、そのストリームはありません。[ここ]({new_stream_link})をクリックして作成してください。"
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "あなたのBot「{bot_identity}」がストリームID「{stream_name}」にメッセージを送信しようとしました。ストリームは存在しますがフォロワーがいません。"
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "この組織では、ダイレクトメッセージが無効化されています。"
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "この組織ではトピックが必須です"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "ウィジェット:APIプログラマは不正なJSONを送信しました"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "ウィジェット:{error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "この名前のカスタム絵文字はすでに存在します"
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "予約メッセージが送信されました"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3507,38 +4068,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name}がストリーム「{old_stream_name}」を「{new_stream_name}」に名前変更しました。"
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "説明がありません。"
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "以前の説明"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "新しい説明"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "永久に"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3552,7 +4113,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3562,187 +4123,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "このAPIはincoming webhookボットに利用できません。"
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "アカウントはこのサブドメインに関連付けられていません"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "このエンドポイントはボットからのリクエストを受け付けません。"
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "サーバー管理者である必要があります"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "権限が足りません"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "このエンドポイントはHTTPのベーシック認証を必要とします。"
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "不正なベーシック認証の認証ヘッダー"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Basic認証の認証ヘッダがありません"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhookボットはwebhookだけにアクセスできます"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "あなたのアカウント{username}は無効化されました。再度アクティブにするには、組織の管理者に連絡してください。"
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "パスワードが弱すぎます"
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "サブドメインは3文字以上必要です。"
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "サブドメインは '-' で始まる、もしくは終わることができません。"
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "サブドメインには小文字と数字と '-' だけが使えます。"
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "本物のメールアドレスを使ってください。"
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "{email} で参加しようとしている組織が存在しません。"
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "組織の管理者から {email} を招待してもらうようにしてください。"
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "あなたのメールアドレス {email} はこの組織のアカウントに登録できるドメインではありません。"
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "この組織では「+」が含まれるメールアドレスは許可されていません。"
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "全てのZulipライセンスが使用中のため、この組織には現在、新規の参加ができません。招待者にライセンス数の追加を依頼してから、再度お試しください。"
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "新しいパスワード"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "新しいパスワードの確認"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "トークン"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "最大10個のメールアドレスを入力してください。"
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Zulip組織が見つかりませんでした。"
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "トピックがありません"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "複数のストリームへは送信できません"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "ストリームがありません"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "メッセージは受信者が必要です"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "不正なメッセージ種別"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "不正な添付ファイル"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "添付ファイルを削除するときにエラーが発生しました。後で再度お試しください。"
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "メッセージは受信者が必要です"
 
@@ -3799,88 +4360,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr "下書きが存在しません"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Zulipを開いてネタバレを表示する"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "不正なメールアドレス"
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "ドメイン外です。"
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "「+」が含まれるメールアドレスは許可されていません。"
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "システムBotに予約されています"
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} のアカウントはすでに存在します"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "アカウントはすでにあります"
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "アカウントは無効化されました"
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "不正なカスタム絵文字"
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "不正なカスタム絵文字名"
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "このカスタム絵文字は無効化されました"
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "不正な絵文字コード"
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "不正な絵文字名"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "不正な絵文字種別"
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "組織管理者か絵文字の作者である必要があります"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "絵文字名が入力されていません"
 
@@ -3888,119 +4449,119 @@ msgstr "絵文字名が入力されていません"
 msgid "Could not allocate event queue"
 msgstr "イベントキューを割り当てることができませんでした"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "ログインしていません: API 認証かユーザーログインが必要です"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "ストリーム「{stream}」は存在しません"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "IDが「{stream_id}」のストリームは存在しません"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "組織オーナー"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "ユーザー"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "唯一の{entity}を無効化できません"
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "不正なMarkdown include文:{include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API使用量が制限を超えました"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "不正なJSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "組織メンバーである必要があります"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "組織管理者である必要があります"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "組織オーナーである必要があります"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "ユーザー名かパスワードが間違っています"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "アカウントは無効化されています"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "組織は無効化されました"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "この組織ではパスワード認証が無効化されています"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "あなたのパスワードは無効化され、リセットが必要です"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "不正なAPIキー"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "不正な形式のAPIキー"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "不正なサブドメイン"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "アクセスが拒否されました"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4008,47 +4569,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "リアクションはすでに存在します"
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "リアクションが存在しません"
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitter ユーザー名"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "GitHub ユーザー名"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "カスタム外部アカウントはURLパターンが定義されている必要があります"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "不正な外部アカウントタイプ"
 
@@ -4146,106 +4707,106 @@ msgstr "生産性"
 msgid "Version control"
 msgstr "バージョン管理"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "メッセージを入力する必要があります"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "メッセージにNULL文字を含んではいけません"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "不正な絞り込みオペレーター: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "引数'anchor'がありません"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "不正なアンカー"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "初めてZulipを使用する場合は、[入門ガイド]({getting_started_url}) をご覧ください!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "こんにちは、そしてZulipへようこそ"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "これはWelcome Botからのダイレクトメッセージです。"
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "使用を始めるためのお手伝いもできます!このメッセージ上のどこかをクリックするか「r」を押して返信してください。"
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "これらのメッセージを理解できます:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "[プロフィール設定](#settings/profile)で[プロフィール画像](/help/change-your-profile-picture)の追加や、[プロフィール情報](/help/edit-your-profile)の編集ができます。"
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4254,119 +4815,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "Zulipではストリームで、[誰がメッセージを受け取るか決める](/help/streams-and-topics)ことができます。これは他のチャットサービスでの「チャンネル」に該当します。"
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[ストリームを閲覧してフォロー](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "ごめんなさい!メッセージを理解できませんでした。次のいずれかのコマンドを試してみてください。"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "これはプライベートストリームです。プライベートストリームはストリーム名の横の鍵アイコンで識別されます。"
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "プライベートストリームはメンバーだけに表示されます。"
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "このストリームを管理するには[ストリーム設定]({stream_settings_url})に移動して`{initial_private_stream_name}`でクリックしてください。"
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "これはトピック `topic demonstration`が設定されたストリーム#**{default_notification_stream_name}** 上のメッセージです。"
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "トピックは会話を整理する軽量な手段です。"
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "トピックについて[ストリームとトピック]({about_topics_help_url})でさらに学べます"
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "これはトピック `泳いでいる亀`が設定されたストリーム#**{default_notification_stream_name}** 上のメッセージです。"
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "レスポンスが不正なJSONです"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "不正なレスポンスのフォーマットです"
 
@@ -4380,45 +4941,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "トークンがありません"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name}があなたにメンションしました:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name}が全員にメンションしました:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4430,23 +4991,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "このクエリーを許可されていないユーザーです"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}'はZulipを使っていません。"
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "組織の外部にダイレクトメッセージは送信できません。"
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4466,21 +5027,21 @@ msgstr "'{var_name}' 引数がありません"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "'{var_name}' の不正な値: {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "不正なペイロード"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "予約メッセージがありません"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4517,7 +5078,7 @@ msgstr "「stream」か「stream_id」のどちらかを選択してください
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "無効なストリーム ID"
 
@@ -4531,7 +5092,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4540,7 +5101,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Web公開ストリームは利用できません"
 
@@ -4572,28 +5133,28 @@ msgstr "トピックを入力してください"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "このストリームではフォロワーデータを利用できません"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "プライベートストリームのフォロワーは取得できません"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name}が真偽値でありません"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name}が日付ではありません"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name}は辞書でありません"
@@ -4604,18 +5165,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name}が浮動小数点数ではありません"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} は小さすぎます"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name}が整数でありません"
@@ -4625,24 +5186,24 @@ msgstr "{var_name}が整数でありません"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} は大きすぎます"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name}がリストでありません"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "不正な{var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name}が長すぎます(制限:{max_length}文字)"
@@ -4652,8 +5213,8 @@ msgstr "{var_name}が長すぎます(制限:{max_length}文字)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name}が文字列でありません"
@@ -4672,21 +5233,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "アップロードが組織の上限アップロード容量を超えています。"
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "画像をデコードできません。画像ファイルをアップロードしましたか?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "画像サイズが制限を超えています。"
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "不明なアニメーション画像形式です"
 
@@ -4743,161 +5304,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "名前が長すぎます!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "名前が短すぎます!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "名前に不正な文字があります!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "不正なフォーマット"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "名前は使用中です"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "利用できない名前またはユーザー名"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "不正な設定データー"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "不正なボット種別"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "不正なインターフェース種別"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "ボットが存在しません"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "ユーザーが存在しません"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "ユーザーは無効化されています"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item}は空白であることはできません"
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name}は不正な長さ {length}です。{target_length}である必要があります"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name}が正しい16進カラーコードでありません"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container}はちょうど{length}のアイテムを持つべきです"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{var_name}にはキー {key_name} がありません"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name}が許可された型でありません"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value}が不正です)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name}がURLでありません"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "{item}は空白であることはできません"
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "{value}は{field_name}の正しい選択肢でありません"
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name}が文字列か整数のリストでありません"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name}が文字列か整数でありません"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name}が見つかりません"
@@ -4931,215 +5492,211 @@ msgstr "CSRFエラー:{reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "ストリームイベント"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "絵文字名に不正な文字"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "pygments言語に不正な文字があります。"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "管理者・モデレーター・メンバー・ゲスト"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "管理者・モデレーター・メンバー"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "管理者・モデレーター"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "管理者限定"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "誰も"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "組織オーナー"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "組織の管理者"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "モデレータ"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "メンバー"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "ゲスト"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web公開"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "パブリック"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "プライベート・履歴を共有"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "非公開・履歴を保護"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "公開・履歴を保護"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "ストリーム内のすべてのユーザーが投稿可能"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "組織の管理者のみ投稿可能"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "組織の管理者とモデレーターのみが投稿できます。"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "組織の正式メンバーのみ投稿可能"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode絵文字"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "カスタム絵文字"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip拡張絵文字"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "オプションのリスト"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "人物ピッカー"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "ショートテキスト"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "ロングテキスト"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "日付ピッカー"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "リンク"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "外部赤雲tの"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode絵文字"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "カスタム絵文字"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip拡張絵文字"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "絵文字名に不正な文字"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "pygments言語に不正な文字があります。"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "ストリームイベント"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web公開"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "パブリック"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "プライベート・履歴を共有"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "非公開・履歴を保護"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "公開・履歴を保護"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "ストリーム内のすべてのユーザーが投稿可能"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "組織の管理者のみ投稿可能"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "組織の管理者とモデレーターのみが投稿できます。"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "組織の正式メンバーのみ投稿可能"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "管理者・モデレーター・メンバー・ゲスト"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "管理者・モデレーター・メンバー"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "管理者・モデレーター"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "管理者限定"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "誰も"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "組織オーナー"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "組織の管理者"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "モデレータ"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "メンバー"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "ゲスト"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "不明なIPアドレス"
@@ -5152,20 +5709,20 @@ msgstr "不明なOS"
 msgid "An unknown browser"
 msgstr "不明なブラウザ"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "'queue_id' 引数がありません"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "'last_event_id' 引数がありません"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "{event_id}より新しいイベントはすでにpruneされています。"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "イベント {event_id}はこのキューに存在しません"
@@ -5203,41 +5760,41 @@ msgstr "正しいパスワードを入力してください"
 msgid "User-Agent header missing from request"
 msgstr "リクエストにUser-Agentヘッダがありません"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "ラベルは空白であることができません"
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "フィールドは最低1つの選択肢が必要です"
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "フィールドタイプは、プロフィール概要ではサポートされていません。"
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "不正なフィールド種別。"
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "プロファイルの概要に表示できるカスタムプロファイルフィールドは2つまでです。"
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "そのラベルのフィールドはすでに存在します"
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "デフォルトカスタムフィールドは更新できません"
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "エンドポイントはプロダクションで利用できません"
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackendは有効でありません"
 
@@ -5288,7 +5845,7 @@ msgstr "メールアドレスを指定してください。"
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5337,19 +5894,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "送信者がいません"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "受信者のユーザーIDでミラーリングは認められていません"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "不正なミラーリングされたメッセージ"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr ミラーリングはこの組織で許可されていません"
 
@@ -5365,42 +5922,46 @@ msgstr "ユーザーはすでにミュートされています"
 msgid "User is not muted"
 msgstr "ユーザーはミュートされていません"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "プレゼンスはBotユーザーでサポートされていません"
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "{user_id_or_email}のプレゼンスデーターがありません"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "クライアントは新しい値を渡しませんでした"
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "空か、トークンの長さが不正です"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "不正なAPNSトークン"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5415,55 +5976,55 @@ msgstr "これらのうち1つ以上の引数が渡されるべきです:emo
 msgid "Read receipts are disabled in this organization."
 msgstr "この組織では既読表示が無効化されています。"
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "有効な認証方法が必要です。"
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "ドメイン「{domain}」はすでにあなたの組織の一部です"
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "ドメイン「{domain}」の項目が見つかりませんでした"
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "ファイルは1つだけアップロードしてください。"
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5497,7 +6058,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "アイコンは1つだけアップロードしてください。"
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifierが見つかりません"
 
@@ -5525,71 +6086,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "プライベートストリームはデフォルトに設定できません"
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "\"new_description\"か\"new_group_name\"を指定すべきです"
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "\"op\"の値が不正です。\"add\"または\"remove\"を指定してください。"
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "同じストリーム名です!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "なにもしません。\"add\"か\"delete\"のうち一つ以上を指定してください。"
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} が、あなたを{stream_name}のフォロワーに追加しました。"
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name}があなたを以下のストリームのフォロワーに追加しました:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "ストリーム({stream_name})にアクセスできません。"
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "ほかのZephyrミラーリングユーザーをプライベートストリームのみに招待できます"
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name}が以下のストリームを作成しました:{stream_str}"
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name}が新しいストリーム「{stream_str}」を作成しました"
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "新しいストリーム"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5598,7 +6159,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "不正なサブメッセージのJSON"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "このファイルの表示を許可されていません。
"
 
@@ -5622,112 +6183,112 @@ msgstr "'to'リストが空白です"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "ユーザーがダイレクトメッセージでの「入力中」表示を無効化しています"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "不正なトークン"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "不正なファイル名"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "ファイルを指定してアップロードしてください。"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "一度に1つのファイルだけアップロードできます"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "新しいデータがありません。"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "ユーザー {user_id} はすでにこのグループのメンバーです。"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "この組織でアバターの変更は無効化されています"
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "この組織のメールアドレス変更は無効です。"
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "不正なdefault_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "ZulipのパスワードはLDAPで管理されています"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "パスワードが間違っています!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "新しいパスワードが弱すぎます"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "アバターは1つだけアップロードしてください。"
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "トピックはミュートされていません"
 
@@ -5788,43 +6349,43 @@ msgstr "使い捨てメールアドレスはこの組織で許可されていま
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "不正なZoomアクセストークン"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoomの認証情報が設定されていません"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "不正なZoomセッション識別子"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "不正なZoom認証情報"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Zoomコールの作成に失敗しました"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5857,11 +6418,11 @@ msgstr "不正なペイロード"
 msgid "Unknown webhook request"
 msgstr "不明なwebhookリクエスト"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "トピックを入力してください"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "コンテンツを入力してください"
 
@@ -5888,7 +6449,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Pivotalのペイロードを処理できません"
 
@@ -5905,83 +6466,105 @@ msgstr "Slackからのメッセージ"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Push通知転送サービス用のサブドメインが不正です"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "正しいZulipサーバーでAPIキーを検証する必要があります"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "不正なトークン種別"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "データが破損しています"
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "パスワードをリセットする必要があります"
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "id_token パラメータがありません"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "不正なOTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "mobile_flow_otp とdesktop_flow_otp を同時に使用できません。"
diff --git a/locale/ja/translations.json b/locale/ja/translations.json
index fca1ea907f..3ef29e6292 100644
--- a/locale/ja/translations.json
+++ b/locale/ja/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(永久)",
   "(hidden)": "(非表示)",
-  "(no description)": "(説明がありません)",
   "(no topic)": "(トピックなし)",
   "(or )": "",
   "(you)": "(あなた)",
   "({message_retention_days} days)": "({message_retention_days} 日)",
   "/dark (Switch to the dark theme)": "/ダーク (ダークモードに切り替え)",
   "/light (Switch to light theme)": "/ライト (ライトモードに切り替え)",
-  "/me is excited (Display action text)": "/me 興奮している (アクションワードを表示する)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll どこで昼ご飯を食べましょうか (投票を作成)",
-  "/todo (Create a todo list)": "/todo (TO DO リストを作る)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1日",
   "1 hour": "1時間",
   "1 week": "1週間",
@@ -28,7 +27,7 @@
   "6 hours": "6時間",
   "Total messages: {total_messages}": "全メッセージ: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "ストリームの発表まで #{notifications_stream}。
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "追加",
   "Add GIF": "GIF追加",
+  "Add a description": "",
   "Add a new alert word": "新しいキーワードを追加",
   "Add a new bot": "新しいボットを追加",
   "Add a new code playground": "新しいコードプレイグラウンドを追加",
@@ -207,6 +207,7 @@
   "Bot": "ボット",
   "Bot email": "ボットのメールアドレス",
   "Bot email (a-z, 0-9, and dashes only)": "ボットのメールアドレス (半角英数字とハイフンのみ)",
+  "Bot is deactivated": "",
   "Bot owner": "ボットの所有者",
   "Bot type": "ボット種別",
   "Bots": "ボット",
@@ -257,7 +258,7 @@
   "Close this dialog window": "このダイアログを閉じる",
   "Code": "コード",
   "Code playgrounds": "コードプレイグラウンド",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "ダイレクトメッセージを折り畳む",
   "Collapse message": "メッセージを折り畳む",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "組織の認証方法を設定します。",
   "Configure the default streams new users are subscribed to when joining your organization.": "組織に新しく参加したユーザーが、デフォルトでフォローするストリームを指定します。",
   "Confirm": "確認",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "コードをコピー",
   "Copy link": "リンクをコピー",
   "Copy link to message": "メッセージへのリンクをコピー",
+  "Copy link to profile": "",
   "Copy link to topic": "トピックへのリンクをコピー",
   "Copy mention syntax": "メンションをコピー",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "全ての下書きを削除",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "カスタムプロフィールフィールドを削除しますか?",
   "Delete data export?": "データエクスポートを削除しますか?",
   "Delete draft": "下書きを削除",
@@ -413,7 +417,6 @@
   "Domain": "ドメイン",
   "Don’t allow disposable email addresses": "使い捨てメールアドレスでの登録を拒否する",
   "Download": "ダウンロード",
-  "Download .zuliprc": ".zuliprcをダウンロード",
   "Download botserverrc": "botserverrcをダウンロード",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "有効なすべてのOutgoing Webhookボットの設定をZulip Botserver形式でダウンロードします。",
   "Download file": "ファイルをダウンロード",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "教育(営利)",
   "Education (non-profit)": "教育(非営利)",
   "Effect": "効果",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "メール",
   "Email address": "メールアドレス",
   "Email address changes are disabled in this organization.": "この組織のメールアドレス変更は無効です。",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "フォローしているトピック",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "忘れましたか?",
@@ -606,6 +610,8 @@
   "Image": "画像",
   "In a meeting": "会議中",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "非アクティブ",
   "Inactive bots": "非アクティブなボット",
   "Inbox": "受信箱",
@@ -704,9 +710,11 @@
   "Manage this bot": "このbotを管理",
   "Manage this user": "このユーザーを管理",
   "Manage user": "ユーザーを管理",
+  "Manage your API key": "",
   "March": "3月",
   "Mark all messages as read": "すべてのメッセージを既読にする",
   "Mark all messages as read?": "すべてのメッセージを既読にしますか?",
+  "Mark all messages as unread": "",
   "Mark as read": "既読にする",
   "Mark as resolved": "解決済みにする",
   "Mark as unread from here": "これ以降を未読にする",
@@ -722,6 +730,7 @@
   "Mentioned in": "メンション",
   "Mentions": "メンション",
   "Menus": "メニュー",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "メッセージ #{stream_name}",
   "Message #{stream_name} > {topic_name}": "メッセージ #{stream_name} > {topic_name}",
   "Message actions": "メッセージの操作",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "メッセージ {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "メッセージ {recipient_name} ({recipient_status})",
+  "Messages": "メッセージ",
   "Messages in all public streams": "すべての公開ストリーム内のメッセージ",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "新規",
   "New direct message": "新しいダイレクトメッセージ",
+  "New direct message from {sender_full_name}": "",
   "New email": "新しいメールアドレス",
   "New message": "新しいメッセージ",
   "New option": "新しい設定",
@@ -821,25 +832,20 @@
   "Next unread direct message": "次の未読のダイレクトメッセージ",
   "Next unread followed topic": "次の未読のフォローしているトピック",
   "Next unread topic": "次の未読のトピック",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "ボットがフィルターに一致しません。",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "説明がありません。",
   "No drafts selected": "",
   "No drafts.": "下書きがありません。",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "検索に一致する招待が存在しません。",
   "No language set": "言語が設定されていません",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "リンク化設定が存在しません",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "一致するユーザーがいません",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "解決済みのトピックはありません",
   "No topics match your current filter.": "検索に一致するトピックが存在しません。",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "登録したメンバーはいません",
   "No user groups": "",
   "No user to subscribe.": "フォロワーがいません",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "なし",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "あなたの管理しているボットはすべて無効になります。ご注意ください。",
   "Note that organizations are limited to five exports per week.": "エクスポートは1週間に5回のみ実行することができます。",
   "Nothing to preview": "プレビューするものがありません",
@@ -932,6 +940,7 @@
   "Other permissions": "その他の権限",
   "Other settings": "その他の設定",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "病欠",
   "Outgoing webhook message format": "Outgoing Webhook メッセージ形式",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "ストリームメッセージにトピックを要求する",
   "Research": "研究",
   "Resend": "再送信",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "再送信中にエラーが発生しました。ページを更新して、もう一度やり直してください。",
+  "Reset to default notifications": "",
   "Reset zoom": "拡大率を戻す",
   "Restore draft": "下書きを元に戻す",
   "Restrict email domains of new users?": "登録可能なメールアドレスのドメインを制限しますか?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "トピックやメッセージ内容でのを検索する",
   "Search people": "ユーザーを検索",
   "Search results": "検索結果",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "メールを設定する方法を確認",
   "Select a stream": "",
   "Select a stream below or change topic name.": "以下のストリームを選択するか、トピック名を変更してください。",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "スター付きメッセージの数を表示",
   "Show status text": "ステータス文を表示",
   "Show unread counts for": "",
-  "Show/change your API key": "自分のAPIキーを表示・変更",
   "Showing messages since {time_string}.": "",
   "Sign up": "登録",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "送信者のメールアドレス",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "ストリームの説明に改行を含むことはできません。",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "無効になったユーザーのパスワードは消去され、無効にしたユーザーが管理していたボットも無効になります。",
   "Theme": "テーマ",
+  "There are no bots.": "",
   "There are no current alert words.": "設定されたキーワードありません",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "受信箱に未読メッセージがありません。",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "無効化できないボットです",
   "This bot cannot be edited.": "操作できないボットです",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "木曜日",
   "Time": "時間",
   "Time format": "時刻の表記",
@@ -1240,6 +1259,7 @@
   "Today": "今日",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "選択したメッセージの最初の絵文字リアクションを切り替える",
+  "Toggle preview mode": "",
   "Toggle subscription": "購読を切り替え",
   "Toggle the gear menu": "設定メニューを切り替え",
   "Toggle topic mute": "トピックのミュートを切り替え",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "このストリームへ送信する権限がありません",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "ユーザのメールアドレスを確認・通知を送信するためにメールを送信する必要があります。",
   "Zulip needs your permission to enable desktop notifications.": "デスクトップ通知を有効にするために許可する必要があります。",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulip の翻訳は、素晴らしいボランティア翻訳者のコミュニティによって提供されています。ご協力いただける方は「Zulip翻訳ガイドライン」をご覧ください。",
@@ -1541,6 +1561,9 @@
   "more topics": "もっとトピックを見る",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {{N}件のメッセージを既読にしました}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {{N}件のメッセージを未読にしました}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",
diff --git a/locale/ko/LC_MESSAGES/django.po b/locale/ko/LC_MESSAGES/django.po
index 6a21d5be53..849137dd7a 100644
--- a/locale/ko/LC_MESSAGES/django.po
+++ b/locale/ko/LC_MESSAGES/django.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: sung yong kim , 2021\n"
 "Language-Team: Korean (http://app.transifex.com/zulip/zulip/language/ko/)\n"
@@ -30,57 +30,51 @@ msgstr ""
 "Language: ko\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "허용되지 않은 손님 사용자"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "유효하지 않은 조직"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "공개 스트림"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "비공개 스트림"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "시작시간이 종료 시간 보다 늦습니다. 시작시간: {start}, 종료시간: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "이용가는한 분석 데이터가 없습니다. 서버 운영자에게 문의하세요."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "유효하지 않은 값들"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -89,7 +83,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -98,7 +92,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -107,7 +101,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -116,7 +110,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -125,11 +119,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -145,124 +139,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{last4}로 끝나는 {brand}  "
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "알수없는 지불 방법입니다. {email}로 연락 주세요."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "문제가 발생했습니다. {email}로 연락 주세요."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "무언가 잘못 되었습니다. 페이지를 새로고침해 주십시오."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "무언가 잘못 되었습니다. 몇 초간 기다린 후 다시 시도 해주세요."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -270,54 +264,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "유효하지 않은 값들"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "에러"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -326,8 +327,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "내부 서버 오류"
 
@@ -432,7 +466,7 @@ msgstr "15일 활동들"
 msgid "Total users"
 msgstr "전체 사용자들"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "사용자"
 
@@ -572,36 +606,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "너의 브라우저에 올바른 링크를 복사하는 것을 확실히 해주십시오.  이 페이지가 계속 생성될 경우, 아마도 오류가 생겼습니다. 죄송합니다."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "청구서"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "현재 창을 종료"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "취소"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "확인"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -623,6 +753,451 @@ msgstr "카테고리들"
 msgid "All"
 msgstr "전체"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -642,11 +1217,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -661,12 +1232,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "조직 생성하기"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -699,51 +1270,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "고객지원 연결"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "조직"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "제출"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -759,14 +1327,6 @@ msgstr "아바타"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -814,7 +1374,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "가입하기"
 
@@ -847,8 +1407,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "로그인"
 
@@ -881,26 +1441,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "지금 시도하기."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "메시지"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1123,21 +1679,21 @@ msgstr "손님 사용자"
 msgid "Normal users"
 msgstr "일반 사용자"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "닫기"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "업데이트"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2360,7 +2916,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2380,7 +2936,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2390,12 +2955,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "이메일 주소"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "계정 찾기"
 
@@ -2427,7 +2992,7 @@ msgstr "통합"
 msgid "Desktop & mobile apps"
 msgstr "데스크탑 & 모바일 앱"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "새로운 조직"
 
@@ -2795,12 +3360,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2809,11 +3370,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2982,6 +3538,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "귀하의 비밀번호를 초기화하세요."
@@ -3139,123 +3711,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "필드 ID {id} 를 찾을 수 없습니다."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "당신의 계정이 이 조직에 초대를 보내기에는 너무 최근에 만들어졌습니다. 조직 관리자에게 문의하거나, 더 경험있는 사용자에게 물어보세요."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "일부 이메일은 확인되지 않았으므로 초대장을 보내지 않았습니다."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "우리는 누구도 초대할 수 없었습니다."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3285,72 +3841,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr "위젯들은 편집되지 않습니다."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "조직에서 메시지 편집을 중단시켰습니다."
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "이 메시지를 편집할 수있는 권한이 없습니다."
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "이 메시지를 편집하는데 시간 제한이 지났습니다."
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "조직에서 메시지 편집을 중단시켰습니다."
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "이 메시지를 편집할 수있는 권한이 없습니다."
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "이 메시지를 편집하는데 시간 제한이 지났습니다."
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3369,137 +3925,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "유효하지 않은 메시지"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "메시지를 렌더링 할 수 없습니다."
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "위젯: API 프로그래머가 유효하지 않은 JSON 콘텐츠를 보냈습니다"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "이 이름을 가진 사용자 정의 이모티콘이 이미 존재합니다."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3508,38 +4069,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "설명이 없습니다."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3553,7 +4114,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3563,187 +4124,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "이 API는 수신 webhook 봇에서 사용할 수 없습니다."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "계정이 하위 도메인과 연결되어 있지 않습니다."
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "이 엔드 포인트는 봇 요청을 허용하지 않습니다."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "서버 운영자여야 합니다"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "불충분한 권한"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "이 엔드 포인트는 HTTP 기본 인증이 필요합니다."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "기본 승인에 대한 권한 헤더가 유효하지 않습니다."
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "기본 승인에 대한 권한 헤더가 없습니다"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook 봇은 Webhook에만 액세스 할 수 있습니다."
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "하위 도메인의 길이는 3 이상이어야합니다."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "하위 도메인은 '-'로 시작하거나 끝낼 수 없습니다."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "하위 도메인은 소문자, 숫자 및 '-'만 가질 수 있습니다."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "귀하의 실제 이메일 주소를 사용하십시오."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "{email}을 사용하여 가입하려는 조직이 존재하지 않습니다."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "조직 관리자에게 {email} 초대장을 요청하십시오."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "귀하의 이메일 주소인 {email}은 이 조직의 계정에 등록 할 수있는 도메인에 속해 있지 않습니다."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "이 조직에는 +가 포함된 이메일 주소가 허용되지 않았습니다."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "새로운 비밀번호"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "흔적"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "최대 10개의 이메일을 입력하십시오."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "누락된 주제"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "다중 스트림에 보낼 수 없습니다."
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "누락된 스트림"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "메시지에 수신자가 있어야합니다."
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "유효하지 않은 메시지 유형"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "유효하지 않은 첨부 파일"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "첨부 파일을 삭제하는 중 오류가 발생했습니다. 나중에 다시 시도 해주십시오."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3800,88 +4361,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "유효하지 않은 주소."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "도메인 외부."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "+가 포함된 이메일 주소는 허용되지 않습니다."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "이미 계정이 있습니다."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "유효하지 않은 사용자 정의 이모티콘."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "유효하지 않은 사용자 정의 이모티콘 이름."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "이 사용자 지정 이모티콘은 비활성화되어 있습니다."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "유효하지 않은 이모티콘 코드."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "이모티콘 이름이 유효하지 않습니다."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "이모티콘 형식이 유효하지 않습니다."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "조직 관리자나 이모티콘 작성자여야 합니다"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3889,119 +4450,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "이벤트 큐를 할당 할 수 없습니다."
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "로그인하지 않음 : API 인증 또는 사용자 세션 필요"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "스트림 '{stream}'이 존재하지 않습니다."
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API 사용량이 속도 제한을 초과했습니다."
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "조작된 JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "조직 관리자여야 합니다."
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "계정이 비활성화되었습니다"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "이 조직은 비활성화되었습니다"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "유효하지 않은 API 키"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "유효하지 않은 하위 도메인"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "접근 불가"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4009,47 +4570,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "반응이 이미 존재합니다."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "반응이 존재하지 않습니다."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4147,106 +4708,106 @@ msgstr "생산성"
 msgid "Version control"
 msgstr "버전관리"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "메시지는 비워 둘 수 없습니다."
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "메시지에 null 바이트가 없어야합니다."
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "유효하지 않은 선택적 보기 연산자 : {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4255,119 +4816,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4381,45 +4942,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "토큰이 존재하지 않습니다."
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4431,23 +4992,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "이 쿼리에 대해 승인되지 않은 사용자"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4467,21 +5028,21 @@ msgstr "'{var_name}'인수가 없습니다."
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "'{var_name}'의 값이 잘못됨 : {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4518,7 +5079,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4532,7 +5093,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4541,7 +5102,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4573,28 +5134,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "구독자 정보는 이 스트림에서 사용되지 않습니다"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "비공개 스트림의 구독자를 검색할 수 없습니다"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4605,18 +5166,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4626,24 +5187,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name}이 너무 깁니다 (제한: {max_length} 글자)"
@@ -4653,8 +5214,8 @@ msgstr "{var_name}이 너무 깁니다 (제한: {max_length} 글자)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4673,21 +5234,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "업로드가 귀하 조직의 업로드 할당량을 초과합니다."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4744,161 +5305,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "이름이 너무 깁니다!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "이름이 너무 짧습니다!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "이름에 유효하지 않은 문자가 있습니다!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "이름이 이미 사용되고 있습니다!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "잘못된 이름 또는 사용자명"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "유효하지 않은 구성 데이터!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "유효하지 않은 봇 유형"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "인터페이스 유형이 유효하지 않습니다."
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "그러한 봇이 없습니다"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "그런 사용자가 없습니다."
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "사용자가 비활성화되었습니다."
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} 은 비워 둘 수 없습니다."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}'은 비워 둘 수  없습니다."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}'는 '{field_name}'에 대한 유효한 선택이 아닙니다."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4932,215 +5493,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "이모티콘 이름에 유효하지 않은 문자가 있습니다."
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "관리자들과 중재자들 과 멤버들 그리고 손님들"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "관리자들과 중재자들 그리고 멤버들"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "관리자들과 중재자들"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "관리자만 가능"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "아무도 없음"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "중재자"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "회원"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "손님"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "공개"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "개인적이고 공유된 기록"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "개인적이고 보호된 기록"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "모든 채널 멤버들은 게시물을 올릴 수 있습니다."
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "오직 조직 관리자들만 게시할 수 있습니다."
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "오직 조직 관리자들 그리고 중재자들만 게시할 수 있습니다."
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "오직 조직 멤버들만 게시할 수 있습니다."
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "유니코드 이모티콘"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "사용자 정의 이모티콘"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip 추가 이모티콘"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "옵션 리스트"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "사람 선택"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "짧은 텍스트"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "긴 텍스트"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "날짜 선택"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "연결"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "유니코드 이모티콘"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "사용자 정의 이모티콘"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip 추가 이모티콘"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "이모티콘 이름에 유효하지 않은 문자가 있습니다."
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "공개"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "개인적이고 공유된 기록"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "개인적이고 보호된 기록"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "모든 채널 멤버들은 게시물을 올릴 수 있습니다."
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "오직 조직 관리자들만 게시할 수 있습니다."
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "오직 조직 관리자들 그리고 중재자들만 게시할 수 있습니다."
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "오직 조직 멤버들만 게시할 수 있습니다."
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "관리자들과 중재자들 과 멤버들 그리고 손님들"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "관리자들과 중재자들 그리고 멤버들"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "관리자들과 중재자들"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "관리자만 가능"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "아무도 없음"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "중재자"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "회원"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "손님"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "알 수 없는 IP주소"
@@ -5153,20 +5710,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "누락된 'queue_id'  인수"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "누락된 'last_event_id' 인수"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5204,41 +5761,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "필드 유형이 유효하지 않습니다."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5289,7 +5846,7 @@ msgstr "이메일 주소를 하나 이상 지정해야합니다."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5338,19 +5895,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "누락된 발신자"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "미러된 메시지가 유효하지 않습니다."
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "이 조직에서 Zephyr 미러링은 사용하실 수 없습니다."
 
@@ -5366,42 +5923,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "현재 상태는 봇 사용자에게는 지원되지 않습니다."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "비어 있거나 유효하지 않은 길이의 토큰입니다."
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "APNS 토큰이 유효하지 않습니다."
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5416,55 +5977,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "하나 이상의 인증 방법이 사용 가능해야합니다."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "정확히 하나의 파일을 업로드해야합니다."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5498,7 +6059,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "단 하나의 아이콘만 업로드해야합니다."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5526,71 +6087,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "\"new_description\"또는 \"new_group_name\"을 전달해야 합니다."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "\"op\"에 대한 값이 유효하지 않습니다. \"추가\"또는 \"제거\"중 하나를 지정하십시오."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "스트림은 이미 그 이름을 가지고 있습니다!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "할 것이 없다. \"추가\"또는 \"삭제\"중 적어도 하나를 지정하십시오."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "다른 Zephyr 미러링 사용자만이 비공개 스트림에 초대 할 수 있습니다."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5599,7 +6160,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "이 파일을 볼 수있는 권한이 없습니다.
"
 
@@ -5623,112 +6184,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "업로드 할 파일을 지정해야합니다."
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "한 번에 하나의 파일만 업로드 할 수 있습니다."
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "새로운 데이터가 제공되지 않았습니다."
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "아바타 변경은 이 조직에서 불가능합니다."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "이 조직에서는 전자 메일 주소 변경이 비활성화되어 있습니다."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "귀하의 Zulip 비밀번호는 LDAP에서 관리됩니다."
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "잘못된 비밀번호!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "정확히 하나의 아바타를 업로드해야합니다."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "주제가 뮤트되어 있지 않습니다"
 
@@ -5789,43 +6350,43 @@ msgstr "여기서는 1회용 이메일 주소는 사용하실 수 없습니다."
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5858,11 +6419,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr "알 수 없는 웹후크 요청"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "주제는 비워둘 수 없습니다."
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "내용은 비워 둘 수 없습니다."
 
@@ -5889,7 +6450,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "피벗 페이로드를 처리 할 수 없습니다."
 
@@ -5906,83 +6467,105 @@ msgstr "Slack으로 부터의 메시지"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "푸시 알림 Bouncer의 하위 도메인이 유효하지 않습니다."
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "유효한 Zulip 서버 API키로 유효화해야 한다."
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "유효하지 않은 토큰 타입"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP가 유효하지 않습니다."
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/ko/translations.json b/locale/ko/translations.json
index 77a67f0756..439490e25a 100644
--- a/locale/ko/translations.json
+++ b/locale/ko/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(지속됨)",
   "(hidden)": "(숨겨진)",
-  "(no description)": "(설명 없음)",
   "(no topic)": "(주제 없음)",
   "(or )": "",
   "(you)": "(귀하)",
   "({message_retention_days} days)": "({message_retention_days} 메세지 보유 기간)",
   "/dark (Switch to the dark theme)": "/어두움 (어두운 테마로 변경)",
   "/light (Switch to light theme)": "/밝음(밝은 모드로 변경)",
-  "/me is excited (Display action text)": "/나는 현재 행복합니다.(상태 표시)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/투표 오늘 어디서 점심 먹을래? (투표를 생성합니다.)",
-  "/todo (Create a todo list)": "(할 일)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 일",
   "1 hour": "1 시간",
   "1 week": "1 주",
@@ -28,7 +27,7 @@
   "6 hours": "6시간",
   "Total messages: {total_messages}": "전체 메세지: {전체 메세지}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "알림이 시작될 것 입니다. #{방송 알림}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "추가하기",
   "Add GIF": "gif 추가",
+  "Add a description": "",
   "Add a new alert word": "새로운 경고문 추가",
   "Add a new bot": "새로운 봇 추가",
   "Add a new code playground": "새로운 코드방 추가",
@@ -207,6 +207,7 @@
   "Bot": "봇",
   "Bot email": "봇 이메일",
   "Bot email (a-z, 0-9, and dashes only)": "봇 메일 (a-z, 0-9, and _표시만 가능)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "봇 타입",
   "Bots": "봇",
@@ -257,7 +258,7 @@
   "Close this dialog window": "이 윈도우 창을 종료",
   "Code": "코드",
   "Code playgrounds": "코드방",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "작성을 삭제",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "조직의 인증 방법을 구성합니다.",
   "Configure the default streams new users are subscribed to when joining your organization.": "조직에 가입할 때 새로운 사용자가 구독하는 기본 스트림을 구성합니다.",
   "Confirm": "확인",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "코드 복사",
   "Copy link": "링크 복사",
   "Copy link to message": "메세지로 가는 링크 복사",
+  "Copy link to profile": "",
   "Copy link to topic": "주제로 가는 링크 복사",
   "Copy mention syntax": "언급 구문 복사",
   "Copy version": "버전 복사",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "임시 보관한 내용 삭제",
@@ -413,7 +417,6 @@
   "Domain": "도메인",
   "Don’t allow disposable email addresses": "1회용 이메일 주소를 허용하지 않습니다",
   "Download": "다운로드",
-  "Download .zuliprc": ".zuliprc 다운로드",
   "Download botserverrc": "botserverrc 다운로드",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Zulip Botserver 형식에서 모든 활성화되어 외부로 나가는 webhook 봇의 구성을 다운로드하십시오.",
   "Download file": "파일 다운로드",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "효과",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "이메일",
   "Email address": "이메일 주소",
   "Email address changes are disabled in this organization.": "이 조직에서는 전자 메일 주소 변경이 비활성화되어 있습니다.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "이미지",
   "In a meeting": "회의 안 에서",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "비활성화된 봇",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "3월",
   "Mark all messages as read": "모든 메시지를 읽은 것으로 표시하기",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "읽음으로 표시",
   "Mark as resolved": "해결되었다고 표시함",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "언급 됨",
   "Mentions": "언급된 메시지",
   "Menus": "메뉴",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "{stream_name}으로 메세지로 보냄",
   "Message #{stream_name} > {topic_name}": "{stream_name} > {topic_name}로 메세지를 보냄",
   "Message actions": "메시지 동작",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "{recipient_label}의 메세지",
   "Message {recipient_names}": "{recipient_names}의 메세지",
   "Message {recipient_name} ({recipient_status})": "{recipient_name} 의메세지 ({recipient_status})",
+  "Messages": "메시지",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "새로운",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "새로운 이메일",
   "New message": "새로운 메시지",
   "New option": "새로운 옵션",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "읽지 않은 다음 주제",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "현재 필터와 일치하는 봇이 없습니다.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "설명이 없습니다.",
   "No drafts selected": "",
   "No drafts.": "임시 보관한 내용이 없습니다.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "현재 필터와 일치하는 초대장이 없습니다.",
   "No language set": "언어 모음 없음",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "링크 모음 없음",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "매칭된 유저들 없음",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "당신의 현재 필터와 일치하는 주제는 없습니다.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "사용자 그룹 설명이 없음",
   "No user groups": "",
   "No user to subscribe.": "구독한 사용자 없음",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "없음",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "유지 관리하는 모든 봇은 사용할 수 없게됩니다.",
   "Note that organizations are limited to five exports per week.": "조직들은 일주일에 최대 5번 내보내기가 가능합니다.",
   "Nothing to preview": "미리 볼 내용이 없습니다.",
@@ -932,6 +940,7 @@
   "Other permissions": "기타 권한",
   "Other settings": "다른 설정들",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "병가",
   "Outgoing webhook message format": "나가는 웹후크 메시지 형식",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "스트림 메시지에 주제 필요",
   "Research": "",
   "Resend": "다시 보내기",
-  "Resend invitation": "초대 다시하기",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "다시 보내는 중에 오류가 발생했습니다. 새로고침하고 다시 시도하십시오.",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "임시 보관한 내용 복구하기",
   "Restrict email domains of new users?": "새로운 사용자의 이메일 도메인을 제한하시겠습니까?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "주제나 메세지 내용에서 찾기",
   "Search people": "사용자 검색",
   "Search results": "검색 결과",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "이메일 구성 방법을 참조하십시오.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "스트림 아래를 선택하거나 주제 이름을 바꾸십시오",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "스타된 메세지 수를 보여주기",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "API 키 표시/변경",
   "Showing messages since {time_string}.": "",
   "Sign up": "가입하기",
   "Silent mentions do not trigger notifications.": "조용한 언급들은 알람을 유발하지 않습니다.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "스트림 표현에는 새로운 캐릭터들을 포함할 수 없습니다.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "그들의 비밀번호가 시스템에서 지워지고, 그들이 유지하는 모든 봇은 사용할 수 없게됩니다.",
   "Theme": "테마",
+  "There are no bots.": "",
   "There are no current alert words.": "현재 알림 단어들은 없습니다.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "목요일",
   "Time": "시간",
   "Time format": "시간 형식",
@@ -1240,6 +1259,7 @@
   "Today": "오늘",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "구독 토글하기",
   "Toggle the gear menu": "메뉴 토글하기",
   "Toggle topic mute": "주제 뮤트 토글하기",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip은 유저의 이메일 주소를 확인하고, 알림을 보내기 위해 이메일을 보내야합니다.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip은 데스크톱 알림을 활성화하기 위해 당신의 허락이 필요합니다.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulip 번역은 놀라운 번역 지원자들에 의해 이루어집니다. 만약 그들이 돕기 원한다면, Zulip 번역 가이드를 살펴보십시오",
@@ -1541,6 +1561,9 @@
   "more topics": "더 많은 주제",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",
diff --git a/locale/lt/LC_MESSAGES/django.po b/locale/lt/LC_MESSAGES/django.po
index b6b8e7e0d6..b9442aacc8 100644
--- a/locale/lt/LC_MESSAGES/django.po
+++ b/locale/lt/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: R S , 2020\n"
 "Language-Team: Lithuanian (http://app.transifex.com/zulip/zulip/language/lt/)\n"
@@ -18,57 +18,51 @@ msgstr ""
 "Language: lt\n"
 "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Analitiniai duomenys negalimi. Susisiekite su serverio administratoriumi."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -77,7 +71,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -86,7 +80,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -95,7 +89,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -104,7 +98,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -113,11 +107,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -133,124 +127,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -258,54 +252,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -314,8 +315,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Vidinė serverio klaida"
 
@@ -420,7 +454,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Naudotojai"
 
@@ -560,36 +594,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Atšaukti"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -611,6 +741,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -630,11 +1205,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -649,12 +1220,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Sukurti organizaciją"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -687,51 +1258,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -747,14 +1315,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -802,7 +1362,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Prisiregistruoti"
 
@@ -835,8 +1395,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Prisijungti"
 
@@ -869,26 +1429,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Bandykite dabar."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1111,21 +1667,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "Naudotojai"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Uždaryti"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2348,7 +2904,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2368,7 +2924,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2378,12 +2943,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Find accounts"
 
@@ -2415,7 +2980,7 @@ msgstr "Integracijos"
 msgid "Desktop & mobile apps"
 msgstr "Darbalaukis ir mobiliosios programėlės"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2783,12 +3348,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2797,11 +3358,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2970,6 +3526,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3127,123 +3699,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Kai kurie el. pašto adresai nepatvirtinti, todėl pakvietimų neišsiuntėme."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Negalėjome nieko pakviesti."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3273,72 +3829,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Neturite teisės redaguoti šios žinutės"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Neturite teisės redaguoti šios žinutės"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3357,137 +3913,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Negaliojanti žinutė"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Nepavyko perteikti žinutės"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3496,38 +4057,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3541,7 +4102,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3551,187 +4112,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Paskyra nesusieta su šiuo subdomenu"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Nepakanka leidimo"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Šis galutinis taškas reikalauja paprastos HTTP autentifikacijos."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Negaliojanti autorizacija"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "„Webhook“ botai gali pasiekti tik „webhook“"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomeno ilgis turi būti nuo 3 simbolių"
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomenas negali prasidėti arba baigtis „-“."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomenas gali turėti tik mažąsias raides, skaičius ir „-“."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Naudokite tikrą el. pašto adresą."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Nėra temos"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Negalima siųsti į kelis srautus"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Žinutė turi turėti gavėjus"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Neteisingas žinutės tipas"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Negaliojantis priedas"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3788,88 +4349,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Negaliojantis adresas."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Už jūsų domeno ribų."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Jau turi paskyrą."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3877,119 +4438,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "Nepavyko paskirti įvykio eilės"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Neprisijungęs: API autentifikavimas arba naudotojo sesija nebegalioja"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Blogas JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Negaliojantis API raktas"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Negaliojantis subdomenas"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Prieiga nesuteikta"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3997,47 +4558,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4135,106 +4696,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Žinutė negali būti tuščia"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4243,119 +4804,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4369,45 +4930,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Tokenas neegzistuoja"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4419,23 +4980,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Naudotojas neturi teisių šiai užklausai"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4455,21 +5016,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4506,7 +5067,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4520,7 +5081,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4529,7 +5090,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4561,28 +5122,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4593,18 +5154,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4614,24 +5175,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4641,8 +5202,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4661,21 +5222,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4732,161 +5293,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Per ilgas vardas"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Pavadinime yra negaliojantis simbolis!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Blogas vardas arba slapyvardis"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Tokio boto nėra"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Tokio naudotojo nėra"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4920,215 +5481,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Negaliojantys simboliai šypsenėlės pavadinime"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Tinkintos šypsenėlės"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Tinkintos šypsenėlės"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Negaliojantys simboliai šypsenėlės pavadinime"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5141,20 +5698,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Trūksta „eilės_id“"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Trūksta „paskutinio_įvykio_id“"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5192,41 +5749,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5277,7 +5834,7 @@ msgstr "Turite nurodyti bent vieną el. pašto adresą."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5326,19 +5883,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Nėra siuntėjo"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Negaliojanti veidrodinė žinutė"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5354,42 +5911,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Tuščias arba netinkamo ilgio tokenas"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5404,55 +5965,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Turi būti įgalintas bent vienas autentifikacijos būdas."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5486,7 +6047,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Turite įkelti vieną ikonėlę."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5514,71 +6075,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Srautas jau turi šį pavadinimą!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Veiksmo nėra. Nurodykite „pridėti“ ar „ištrinti“."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5587,7 +6148,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5611,112 +6172,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Turite nurodyti norimą įkelti failą"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Galite vienu metu kelti tik vieną failą"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nauji duomenys nepateikti"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "El. pašto adreso pakeitimai šiai organizacijai išjungti."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Blogas slaptažodis"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Turite įkelti vieną avatarą."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5777,43 +6338,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5846,11 +6407,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr "Nežinomas „webhook“ prašymas"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Temos vieta negali būti tuščia"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Turinys negali būti tuščias"
 
@@ -5877,7 +6438,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Nepavyko sutvarkyti esminio įkrovimo"
 
@@ -5894,83 +6455,105 @@ msgstr "Žinutė iš „Slack“"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/lt/translations.json b/locale/lt/translations.json
index 9e212e60fa..c428b99525 100644
--- a/locale/lt/translations.json
+++ b/locale/lt/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "Botai",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efektas",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "El. paštas",
   "Email address": "",
   "Email address changes are disabled in this organization.": "El. pašto adreso pakeitimai šiai organizacijai išjungti.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Paminėjimai",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Ieškoti žmonių",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "Prisiregistruoti",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "Perjungti reikmenų meniu",
   "Toggle topic mute": "Perjungti temos nutildymą.",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} few {} many {} other {}}",
diff --git a/locale/lv/LC_MESSAGES/django.po b/locale/lv/LC_MESSAGES/django.po
index 6f58c606aa..f19c34d8d8 100644
--- a/locale/lv/LC_MESSAGES/django.po
+++ b/locale/lv/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -19,56 +19,50 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
 "2);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -77,7 +71,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -85,7 +79,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than one user to join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -93,7 +87,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than two users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -101,7 +95,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than three users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -110,11 +104,11 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -130,124 +124,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this "
 "page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -257,54 +251,61 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -314,8 +315,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -426,7 +464,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr ""
 
@@ -568,36 +606,138 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr ""
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -619,6 +759,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -638,11 +1223,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -657,12 +1238,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -695,103 +1276,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -807,14 +1333,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -863,7 +1381,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
@@ -896,8 +1414,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr ""
 
@@ -931,26 +1449,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1182,21 +1696,21 @@ msgstr ""
 msgid "Normal users"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2453,7 +2967,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2466,12 +2990,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr ""
 
@@ -2503,7 +3027,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2870,12 +3394,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2884,11 +3404,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -3061,6 +3576,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3224,125 +3757,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3372,72 +3887,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3456,136 +3971,141 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3595,38 +4115,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3641,7 +4161,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3651,187 +4171,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3888,88 +4408,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3977,166 +4497,166 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4234,106 +4754,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4341,119 +4861,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4467,45 +4987,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4517,23 +5037,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4553,21 +5073,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4604,7 +5124,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4618,7 +5138,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4627,7 +5147,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4659,28 +5179,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4691,18 +5211,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4712,24 +5232,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4739,8 +5259,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4759,21 +5279,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4830,161 +5350,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5018,215 +5538,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4983
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4987
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5027
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5048
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5053
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5239,20 +5755,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5290,41 +5806,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5375,7 +5891,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5424,19 +5940,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5452,42 +5968,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5502,55 +6022,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5584,7 +6104,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5612,71 +6132,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5685,7 +6205,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5709,112 +6229,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5875,43 +6395,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5944,11 +6464,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5975,7 +6495,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5992,83 +6512,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/lv/translations.json b/locale/lv/translations.json
index 21d2ddb148..a1b518e813 100644
--- a/locale/lv/translations.json
+++ b/locale/lv/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "",
+  "{N, plural, one {# participant} other {# participants}}": "",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "",
diff --git a/locale/ml/LC_MESSAGES/django.po b/locale/ml/LC_MESSAGES/django.po
index c3ae079ad0..df8020d076 100644
--- a/locale/ml/LC_MESSAGES/django.po
+++ b/locale/ml/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2021-05-27 07:08+0000\n"
 "Last-Translator: Akash Nimare \n"
 "Language-Team: Malayalam (http://www.transifex.com/zulip/zulip/language/"
@@ -20,61 +20,55 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 #, fuzzy
 #| msgid "Private messages"
 msgid "Direct messages"
 msgstr "സ്വകാര്യ സന്ദേശങ്ങൾ"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 #, fuzzy
 #| msgid "Private messages"
 msgid "Group direct messages"
 msgstr "സ്വകാര്യ സന്ദേശങ്ങൾ"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 "അനലിറ്റിക്സ് ഡാറ്റയൊന്നും ലഭ്യമല്ല. ദയവായി നിങ്ങളുടെ സെർവർ അഡ്മിനിസ്ട്രേറ്ററെ ബന്ധപ്പെടുക."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -83,7 +77,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -91,7 +85,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than one user to join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -99,7 +93,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than two users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -107,7 +101,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than three users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -116,11 +110,11 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -136,126 +130,126 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this "
 "page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 #, fuzzy
 #| msgid "Deactivated organization"
 msgid "No customer for this organization!"
 msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -265,56 +259,63 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 #, fuzzy
 #| msgid "Terms of Service"
 msgid "You must accept the Terms of Service to proceed."
 msgstr "സേവന നിബന്ധനകൾ"
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -324,8 +325,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -442,7 +480,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "ഉപയോക്താക്കൾ"
 
@@ -586,40 +624,146 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 #, fuzzy
 #| msgid "Close"
 msgid "Close modal"
 msgstr "അടയ്ക്കുക"
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "റദ്ദാക്കുക"
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 #, fuzzy
 #| msgid "Confirm password"
 msgid "Confirm"
 msgstr "രഹസ്യവാക്ക് ഉറപ്പിക"
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+#, fuzzy
+#| msgid "Cancel compose"
+msgid "Cancel upgrade"
+msgstr "രചിക്കൽ വേണ്ടെന്ന് വെക്കൂ"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+#, fuzzy
+#| msgid "Deactivated organization"
+msgid "Deactivate server registration?"
+msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -641,6 +785,455 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+#, fuzzy
+#| msgid "All messages"
+msgid "10,000 messages"
+msgstr "എല്ലാ മെസ്സേജുകളും "
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+#, fuzzy
+#| msgid "About Zulip"
+msgid "Supported"
+msgstr "സുലിപ്പിനെക്കുറിച്ച്"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -660,11 +1253,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -679,12 +1268,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -719,113 +1308,56 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-#, fuzzy
-#| msgid "Deactivated organization"
-msgid "Deactivate server registration?"
-msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 #, fuzzy
 #| msgid "Organization URL"
 msgid "Organization"
 msgstr "ഓർഗനൈസേഷൻ URL"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 #, fuzzy
 #| msgid "Next message"
 msgid "Message"
 msgstr "അടത്ത സന്ദേശം"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 #, fuzzy
 #| msgid "Thanks for signing up!"
 msgid "Thanks for contacting us"
 msgstr "സൈനപ്പ് ചെയ്തതിനു നന്ദി"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 #, fuzzy
 #| msgid "Thanks for signing up!"
 msgid "Thanks for contacting us!"
 msgstr "സൈനപ്പ് ചെയ്തതിനു നന്ദി"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -841,14 +1373,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -901,7 +1425,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "സൈനപ്പ്"
@@ -934,8 +1458,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "ലൊഗിൻ"
 
@@ -971,26 +1495,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1228,21 +1748,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "സാധാരണ ഉപയോക്താക്കൾ"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "അടയ്ക്കുക"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2517,7 +3037,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2530,14 +3060,14 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 #, fuzzy
 #| msgid "One or more email addresses..."
 msgid "Email address"
 msgstr "ഒന്നോ അതിൽ കൂടുതലോ ഈമെയിൽ വിലാസങ്ങൾ"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "അക്കൗണ്ടുകൾ കണ്ടെത്തുക"
 
@@ -2571,7 +3101,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2950,12 +3480,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2964,11 +3490,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 #, fuzzy
@@ -3149,6 +3670,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക"
@@ -3318,125 +3857,108 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
-#, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr ""
+#: zerver/actions/create_user.py:110
+#, fuzzy, python-brace-format
+#| msgid "Deactivated organization"
+msgid "{user} joined this organization."
+msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3470,72 +3992,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3554,140 +4076,145 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 #, fuzzy
 #| msgid "Deactivated organization"
 msgid "Direct messages are disabled in this organization."
 msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 #, fuzzy
 #| msgid "Deactivated organization"
 msgid "Topics are required in this organization"
 msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3697,38 +4224,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3743,7 +4270,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3753,187 +4280,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "പുതിയ രഹസ്യവാക്ക്"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3990,89 +4517,89 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, fuzzy, python-brace-format
 #| msgid "Notifications"
 msgid "{service_name} notifications"
 msgstr "അറിയിപ്പുകൾ"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -4080,170 +4607,170 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 #, fuzzy
 #| msgid "Organization URL"
 msgid "Organization not registered"
 msgstr "ഓർഗനൈസേഷൻ URL"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 #, fuzzy
 #| msgid "Username"
 msgid "GitHub username"
 msgstr "യൂസർനെയിം"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4341,106 +4868,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4448,119 +4975,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4574,47 +5101,47 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 #, fuzzy
 #| msgid "Notifications"
 msgid "Test notification"
 msgstr "അറിയിപ്പുകൾ"
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4626,23 +5153,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4662,21 +5189,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4713,7 +5240,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4727,7 +5254,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4736,7 +5263,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4768,28 +5295,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4800,18 +5327,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4821,24 +5348,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4848,8 +5375,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4868,21 +5395,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4939,161 +5466,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5127,217 +5654,213 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
+#: zerver/models/custom_profile_fields.py:50
+#, python-brace-format
+msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
+#: zerver/models/custom_profile_fields.py:54
+#, python-brace-format
+msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
+#: zerver/models/custom_profile_fields.py:94
+msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
+#: zerver/models/custom_profile_fields.py:112
+msgid "Link"
 msgstr ""
 
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+#: zerver/models/custom_profile_fields.py:115
+msgid "External account"
 msgstr ""
 
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
+#: zerver/models/custom_profile_fields.py:120
+msgid "Pronouns"
 msgstr ""
 
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
 #, python-brace-format
 msgid "Bad regular expression: {regex}"
 msgstr ""
 
-#: zerver/models.py:1348
+#: zerver/models/linkifiers.py:37
 msgid "Unknown regular expression error"
 msgstr ""
 
-#: zerver/models.py:1356
+#: zerver/models/linkifiers.py:45
 msgid "Invalid URL template."
 msgstr ""
 
-#: zerver/models.py:1405
+#: zerver/models/linkifiers.py:94
 #, python-format
 msgid "Group %(name)r in URL template is not present in linkifier pattern."
 msgstr ""
 
-#: zerver/models.py:1417
+#: zerver/models/linkifiers.py:106
 #, python-format
 msgid "Group %(name)r in linkifier pattern is not present in URL template."
 msgstr ""
 
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "നിങ്ങൾക്ക് വേണ്ട ഇമോജി"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
 msgid "Invalid characters in pygments language"
 msgstr ""
 
-#: zerver/models.py:1503
+#: zerver/models/realm_playgrounds.py:70
 msgid "Missing the required variable \"code\" in the URL template"
 msgstr ""
 
-#: zerver/models.py:1508
+#: zerver/models/realm_playgrounds.py:75
 msgid "\"code\" should be the only variable present in the URL template"
 msgstr ""
 
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
+#: zerver/models/realms.py:337
+msgid "stream events"
 msgstr ""
 
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
 msgstr ""
 
-#: zerver/models.py:1797
-#, fuzzy
-#| msgid "Administrators"
-msgid "Admins and moderators"
-msgstr "നടത്തിപ്പുകാർ"
-
-#: zerver/models.py:1798
-msgid "Admins only"
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
 msgstr ""
 
-#: zerver/models.py:1799
-msgid "Nobody"
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
 msgstr ""
 
-#: zerver/models.py:1961
-msgid "Unknown user"
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
 msgstr ""
 
-#: zerver/models.py:2117
-msgid "Organization owner"
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
 msgstr ""
 
-#: zerver/models.py:2118
-msgid "Organization administrator"
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
 msgstr ""
 
-#: zerver/models.py:2119
-msgid "Moderator"
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
 msgstr ""
 
-#: zerver/models.py:2120
-msgid "Member"
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
 msgstr ""
 
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
+#: zerver/models/streams.py:46
 msgid "Web-public"
 msgstr ""
 
-#: zerver/models.py:2715
+#: zerver/models/streams.py:52
 msgid "Public"
 msgstr ""
 
-#: zerver/models.py:2721
+#: zerver/models/streams.py:58
 #, fuzzy
 #| msgid "Private messages"
 msgid "Private, shared history"
 msgstr "സ്വകാര്യ സന്ദേശങ്ങൾ"
 
-#: zerver/models.py:2727
+#: zerver/models/streams.py:64
 msgid "Private, protected history"
 msgstr ""
 
-#: zerver/models.py:2735
+#: zerver/models/streams.py:72
 msgid "Public, protected history"
 msgstr ""
 
-#: zerver/models.py:2755
+#: zerver/models/streams.py:92
 msgid "All stream members can post"
 msgstr ""
 
-#: zerver/models.py:2756
+#: zerver/models/streams.py:93
 msgid "Only organization administrators can post"
 msgstr ""
 
-#: zerver/models.py:2758
+#: zerver/models/streams.py:95
 msgid "Only organization administrators and moderators can post"
 msgstr ""
 
-#: zerver/models.py:2761
+#: zerver/models/streams.py:98
 msgid "Only organization full members can post"
 msgstr ""
 
-#: zerver/models.py:3446
-msgid "Unicode emoji"
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
 msgstr ""
 
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "നിങ്ങൾക്ക് വേണ്ട ഇമോജി"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
 msgstr ""
 
-#: zerver/models.py:4983
-#, python-brace-format
-msgid "User with ID {user_id} is deactivated"
+#: zerver/models/users.py:255
+#, fuzzy
+#| msgid "Administrators"
+msgid "Admins and moderators"
+msgstr "നടത്തിപ്പുകാർ"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
 msgstr ""
 
-#: zerver/models.py:4987
-#, python-brace-format
-msgid "User with ID {user_id} is a bot"
+#: zerver/models/users.py:257
+msgid "Nobody"
 msgstr ""
 
-#: zerver/models.py:5027
-msgid "List of options"
+#: zerver/models/users.py:419
+msgid "Unknown user"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/users.py:575
+msgid "Organization owner"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
+#: zerver/models/users.py:576
+msgid "Organization administrator"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Long text"
+#: zerver/models/users.py:577
+msgid "Moderator"
 msgstr ""
 
-#: zerver/models.py:5044
-msgid "Date picker"
+#: zerver/models/users.py:578
+msgid "Member"
 msgstr ""
 
-#: zerver/models.py:5045
-msgid "Link"
-msgstr ""
-
-#: zerver/models.py:5048
-msgid "External account"
-msgstr ""
-
-#: zerver/models.py:5053
-msgid "Pronouns"
+#: zerver/models/users.py:579
+msgid "Guest"
 msgstr ""
 
 #: zerver/signals.py:105
@@ -5352,20 +5875,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5407,41 +5930,41 @@ msgstr "രഹസ്യവാക്കിന്റെ ബലം"
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5492,7 +6015,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5541,19 +6064,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5569,42 +6092,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5621,57 +6148,57 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 #, fuzzy
 #| msgid "Deactivated organization"
 msgid "Must be a demo organization."
 msgstr "നിഷ്ക്രീയമാക്കിയ സംഘടന"
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5705,7 +6232,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5733,71 +6260,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5806,7 +6333,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5830,112 +6357,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5996,43 +6523,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -6065,11 +6592,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -6096,7 +6623,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -6113,84 +6640,106 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
 
@@ -6266,9 +6815,6 @@ msgstr ""
 #~ msgid "New private message"
 #~ msgstr "പുതിയ സ്വകാര്യ സന്ദേശം"
 
-#~ msgid "Cancel compose"
-#~ msgstr "രചിക്കൽ വേണ്ടെന്ന് വെക്കൂ"
-
 #~ msgid "Last message"
 #~ msgstr "അവസാനത്തെ സന്ദേശം"
 
@@ -6305,9 +6851,6 @@ msgstr ""
 #~ msgid "Create new stream"
 #~ msgstr "പുതിയ ശാഖ നിർമ്മിക്കുക"
 
-#~ msgid "All messages"
-#~ msgstr "എല്ലാ മെസ്സേജുകളും "
-
 #~ msgid "STREAMS"
 #~ msgstr "ശാഖകൾ"
 
diff --git a/locale/ml/translations.json b/locale/ml/translations.json
index 907a3c127e..99763fb868 100644
--- a/locale/ml/translations.json
+++ b/locale/ml/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(വിഷയം ഇല്ല)",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "ചേർക്കുക",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "ബോട്ടുകൾ",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "കോഡ്",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "ഈമെയിൽ",
   "Email address": "ഈമെയിൽ വിലാസം",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "ചിത്രം",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "ആളുകളേ തിരയൂ",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "നിങ്ങളുടെ API കീ കാണിക്കുക അഥവാ മാറ്റുക",
   "Showing messages since {time_string}.": "",
   "Sign up": "സൈനപ്പ്",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "കൂടുതൽ വിഷയങ്ങൾ",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/mn/LC_MESSAGES/django.po b/locale/mn/LC_MESSAGES/django.po
index bd5e0497bf..2cd35c5262 100644
--- a/locale/mn/LC_MESSAGES/django.po
+++ b/locale/mn/LC_MESSAGES/django.po
@@ -18,7 +18,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Tim Abbott , 2023\n"
 "Language-Team: Mongolian (http://app.transifex.com/zulip/zulip/language/mn/)\n"
@@ -28,57 +28,51 @@ msgstr ""
 "Language: mn\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Зочин хэрэглэгчдэд зөвшөөрөгдөөгүй"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Буруу бүлэг"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Нээлттэй групп чат"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Хаалттай групп чат"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Хувийн чат"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Групп хувийн чат"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Эхлэх цаг дуусах хугацаанаас хожуу байна. Эхлэх: {start}, Дуусах: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Аналитик мэдээлэл байхгүй. Серверийн админтайгаа холбогдоно уу."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Буруу параметрууд"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -87,7 +81,7 @@ msgid ""
 "users to join."
 msgstr "Zulip  лиценз үүсгэх эрхгүй байна. ({billing_page_link})  [лицензийн тоо нэмэх] эсвэл ({deactivate_user_help_page_link}) [идэвхгүй хэрэглэгчээ хасаж] шинэ хэрэглэгч үүсгэх эрхээ нээнэ үү."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr "Zulip-ийн нэг л лиценз авсан байна. Та [лицензийн тоогоо нэмж болно]({billing_page_link}) эсвэл [идэвхгүй хэрэглэгчээ хасаж ]({deactivate_user_help_page_link}) шинэ хэрэглэгч нэмэх эрхээ нээнэ үү."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr "Zulip-ийн хоёр лиценз авсан байна. Та [лицензийн тоогоо нэмж болно]({billing_page_link}) эсвэл [идэвхгүй хэрэглэгчээ хасаж ]({deactivate_user_help_page_link}) шинэ хэрэглэгч нэмэх эрхээ нээнэ үү."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -114,7 +108,7 @@ msgid ""
 "join."
 msgstr "Zulip-ийн 3 лиценз авсан байна. Та [лицензийн тоогоо нэмж болно]({billing_page_link}) эсвэл [идэвхгүй хэрэглэгчээ хасаж ]({deactivate_user_help_page_link}) шинэ хэрэглэгч нэмэх эрхээ нээнэ үү."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -123,11 +117,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "({email}) шинэ гишүүн нь группруу нэгдэх боломжгүй байна. Zulip-ийн бүр лицензийг хэрэглэсэн байна. Та [лицензийн тоогоо нэмж болно]({billing_page_link}) эсвэл [идэвхгүй хэрэглэгчээ хасаж ]({deactivate_user_help_page_link}) шинэ хэрэглэгч нэмэх эрхээ нээнэ үү."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Энэ байгууллагын бүх Zulip лицензийг одоогоор ашиглаж байна."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -143,124 +137,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} төгсгөл нь {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Тодорхойгүй төлбөрийн хэлбэр байна.  {email} холбогдоно уу."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Алдаа гарлаа. {email} холбогдоно уу."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Алдаа гарлаа. Хуудсаа дахин уншуулна уу."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Алдаа гарлаа. Хэсэг хугацаанд хүлээж байгаад дахин оролдоно уу."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Үйлчилгээний ангилал шинэчлэх боломжгүй. Хугацаа нь дууссаны дараа шинэ ангилал идэвхжүүлэх боломжтой."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Үйлчилгээний ангилал шинэчлэх боломжгүй. Хугацаа нь дууссан байна."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Лицензүүдийг гараар шинэчлэх боломжгүй. Таны план автомат лицензийн менежмент дээр байна."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Таны үйлчилгээ {licenses} лицензээр сунгагдах боломжтой."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Та одоогийн төлбөрийн хугацаандаа лицензийг бууруулах боломжгүй."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Таны үйлчилгээ {licenses_at_next_renewal}  лицензээр автомат сунгалт хийгдэхээр байна."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Өөрчлөх зүйл алга."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Энэ байгууллагад үйлчлүүлэгч байхгүй!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Холболт салсан"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Төлбөрийн администратор эсвэл байгууллагын эзэмшигч байх ёстой."
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Төлбөрийн зориулалт олдсонгүй"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "stripe_session_id эсвэл stripe_payment_intent_id оруулах"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -268,54 +262,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Танай бүлгийн ивээн хостын хүсэлтийг хүлээн авлаа!  Та {plan_name} руу үнэ төлбөргүй шинэчлэгдлээ. {emoji}\n\nХэрэв та {begin_link}Оффис чат-ийг вэбсайтдаа байршуулвал{end_link} бид талархах болно!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Буруу параметрууд"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Алдаа"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Энэ аргыг зөвшөөрөөгүй (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Тухайн хуудас олдсонгүй. (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -324,8 +325,41 @@ msgid ""
 "                        "
 msgstr "\nХэрэв энэ алдаа гэнэт гарвал, та \nбидэнтэй холбогдоорой\n "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Энэ аргыг зөвшөөрөөгүй (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Сервер дээрх алдаа"
 
@@ -430,7 +464,7 @@ msgstr "15 хоногийн идэвхтэй"
 msgid "Total users"
 msgstr "Бүх хэрэглэгчид"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Хэрэглэгчид"
 
@@ -570,38 +604,134 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Та хөтөч дээрээ холбоосыг зөв хуулсан эсэхээ шалгаарай. Хэрэв та энэ хуудастай тулгарсан хэвээр байгаа бол энэ нь бидний буруу байж магадгүй юм. Биднийг уучлаарай."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Төлбөр"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Модалыг хаах"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Цуцлах"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Баталгаажуулалт"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
 msgstr ""
 
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Төлбөрийн мэдээлэл "
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Тогтоосон лимит хэтэрсэн байна."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Тогтоосон лимит хэтэрсэн байна."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "%(retry_after)s секунтын дараа дахин оролдох боломжтой."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Багц дээшлүүлэх"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Шинэчлэхээсээ өмнө туршилтын бүлгийг өөрчлөх."
+
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
 msgstr "Олон нийтийн лавлахыг нээх"
@@ -621,6 +751,451 @@ msgstr "Ангиллууд"
 msgid "All"
 msgstr "Бүгд"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Zulip хөгжүүлэлт"
@@ -640,11 +1215,7 @@ msgstr "Self-hoster-оор нэгдэх"
 msgid "Join as a contributor"
 msgstr "Contributor-оор нэгдэх"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Төлбөрийн мэдээлэл "
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -659,12 +1230,12 @@ msgstr "Төлбөрийн мэдээлэл "
 msgid "Create organization"
 msgstr "Байгууллага үүсгэх"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "План болон үнэ"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -697,51 +1268,48 @@ msgstr "Сургалтын үнэ"
 msgid "View pricing"
 msgstr "Үнэ харах"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Бизнесд зориулсан Zulip"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Тусламж авах"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Хэнээс"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Байгууллага"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Гарчиг"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Мэссэж"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Илгээх"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Бидэнтэй холбогдсонд баярлалаа."
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Бидэнтэй холбогдсонд баярлалаа!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Бид удахгүй таньтай холбогдох болно."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -757,14 +1325,6 @@ msgstr "Aватар"
 msgid "Try Zulip now"
 msgstr "Оффис чатыг туршаарай"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Багц дээшлүүлэх"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Шинэчлэхээсээ өмнө туршилтын бүлгийг өөрчлөх."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -812,7 +1372,7 @@ msgstr "Үргэлжлүүлэх"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Бүртгүүлэх"
 
@@ -845,8 +1405,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Нэвтрэх"
 
@@ -879,26 +1439,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Zulip-тай холбогдох боломжгүй байна."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Шинэчлэлтүүд хойшлогдож магадгүй."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Удахгүй дахин оролдоно..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Дахин оролдоно уу"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Мессеж"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Дэд домайн баталгаажуулалтын алдаа"
@@ -1121,21 +1677,21 @@ msgstr "Зочин хэрэглэгчид"
 msgid "Normal users"
 msgstr "Энгийн хэрэглэгч"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Хаах"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Өөрчлөх"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2358,7 +2914,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2378,7 +2934,16 @@ msgid ""
 "                    "
 msgstr "\nИмэйл илгээсэн! Та зөвхөн Оффис чат бүлэгтэй холбоотой хаягаараа имэйл хүлээн авах болно\n Оруулсан хаягууд\nөмнөх хуудсаны доор жагсаасан байна:"
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2388,12 +2953,12 @@ msgid ""
 "                    "
 msgstr "\nИдэвхтэй аккаунттай бүх Оффис чат Cloud бүлгийн URL хаягтай имэйл хүлээн авахын тулд имэйл хаягаа оруулна уу. Хэрэв та нууц үгээ мартсан бол шинэчлэх боломжтой.\n "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Имэйл хаяг"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Хаяг хайх"
 
@@ -2425,7 +2990,7 @@ msgstr "интеграц"
 msgid "Desktop & mobile apps"
 msgstr "Десктоп & утасны апп"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Шинэ байгууллага"
 
@@ -2793,13 +3358,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Таныг урьсан хүнтэй холбогдож лицензийн тоог нэмэгдүүлэхийг хүсээд дахин оролдоно уу."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Тогтоосон лимит хэтэрсэн байна."
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Тогтоосон лимит хэтэрсэн байна."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2807,11 +3368,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Та  энэ үйлдлийг хэр давтамжтайгаар хийх хязгаарыг хэтрүүлсэн байна."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "%(retry_after)s секунтын дараа дахин оролдох боломжтой."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2980,6 +3536,22 @@ msgstr "Та юу сонирхож байна вэ?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Zulip-ийн мэдээллийн санд бүртгүүлээрэй (жилд цөөхөн имэйл илгээдэг)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Нууц үгээ шинэчлэх"
@@ -3137,123 +3709,107 @@ msgid ""
 "                        "
 msgstr "\nТа мөн Zulip ширээний програмыг ашиглаж болно."
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "Бүртгэл"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} саяхан Zulip-д бүртгүүлсэн. (нийт: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} таны Zulip-д нэгдэх хүсэлтийг хүлээн авлаа!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Буруу захиалга"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "{id} олдсонгүй."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' нь default stream бөгөөд '{group_name}' нэмэх боломжгүй"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Default stream групп '{group_name}' аль хэдийн үүссэн байна"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "'{stream_name}' stream нь '{group_name}' default stream группд аль хэдийн байна"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "'{stream_name}' stream '{group_name}' default stream группд байхгүй байна"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Zulip хэрэглэгчдийн аюулгүй байдыг хангахын тулд нэг өдрийн дотор илгээх урилгын тоог хязгаарладаг. Та хязгаарт хүрсэн тул урилга илгээгдээгүй байна."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Та уг үйлдэлийг хийх эрхгүй байна. Админ хэрэглэгчтэй холбогдон шийдвэрлэнэ үү."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Зарим имэйлийг баталгаажуулаагүй тул бид урилга илгээгээгүй."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Бид хэнийг ч урих боломжгүй байсан."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3283,72 +3839,72 @@ msgstr "Stream-ыг өөрчлөх үед мессежийн агуулгыг ө
 msgid "Widgets cannot be edited."
 msgstr "Виджетийг засах боломжгүй."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Танай байгууллага мессеж засварлахыг эрхийг хаасан байна"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Та энэ мессежийг засах эрхгүй байна"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Энэ мессежийг засварлах хугацаа өнгөрсөн байна"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} энэ topic-ыг шийдсэн гэж тэмдэглэсэн."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} энэ topic-ыг шийдэгдээгүй гэж тэмдэглэсэн."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Энэ topic-ыг {user} {new_location} руу зөөсөн."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "{user} энэ topic-оос мессежийг {new_location} руу зөөсөн."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} мессежийг {user} энэ topic-оос {new_location} руу зөөсөн."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Энэ topic-ыг {old_location}-с {user} энд зөөсөн."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[A message]({message_link}) {old_location}-с {user}-р энэд нүүлгэсэн."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} мессежийг {old_location}-с {user} энд зөөсөн."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Танай байгууллага мессеж засварлахыг эрхийг хаасан байна"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Та энэ мессежийг засах эрхгүй байна"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Энэ мессежийг засварлах хугацаа өнгөрсөн байна"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Та энэ мессежийг зөөх эрхгүй байна"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Энэ зурвасын дамжуулалтыг засварлах хугацаа өнгөрсөн байна"
 
@@ -3367,137 +3923,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Буруу мессеж(үүд)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Мессежийг үзүүлэх боломжгүй"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Яг нэг stream хүлээж байсан"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Stream-ын өгөгдлийн төрөл буруу"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Хүлээн авагчийн өгөгдлийн төрөл буруу байна"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Хүлээн авагчийн лист дотор имэйл хаяг эсвэл хэрэглэгчийн ID байх боломжтой, хоёулаа байх боломжгүй."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Таны {bot_identity} бот {stream_id} stream ID-руу мессеж илгээхийг оролдсон боловч ийм ID-тай stream байхгүй байна."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Таны бот {bot_identity} {stream_name} stream-руу мессеж илгээхийг оролдсон боловч энэ stream байхгүй байна. Stream үүсгэхийн тулд [энд]({new_stream_link}) дарна уу."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Таны {bot_identity} бот {stream_name} руу мессеж илгээхийг оролдсон. Stream байгаа ч гишүүн байхгүй."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Энэ бүлэгт хувийн чатыг идэвхгүй болгосон."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Уг байгууллагад сэдэв шаардлагатай"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: API программист хүчингүй JSON контент илгээсэн"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Адил нэртэй эможи аль хэдийн нэмэгдсэн байна."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Илгээхээр төлөвлөсөн мессежийг аль хэдийн илгээсэн байна"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "Төлөвлөсөн хүргэх хугацааг тохируулахгүй байх хэрэгтэй."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Мессежийг товлосон цагт илгээж чадсангүй."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Таны {delivery_datetime}-д товлосон мессежийг дараах алдааны улмаас илгээгээгүй:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[Илгээхээр төлөвлөсөн мессежүүдийг харах](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Чат өрөөг аль хэдийн идэвхгүй болсон"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} энэ stream-ын **{old_policy}**-с **{new_policy}** болгон [хандах зөвшөөрлийг](/help/stream-permissions) өөрчилсөн."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3506,38 +4067,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "Энэхүү чат өрөөний [постлох эрх](/help/stream-sending-policy)-ийг {user} хэрэглэгч нь өөрчилсөн:\n\n* **Хуучин эрх**: {old_policy}.\n * **Шинэ эрх**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} stream-ыг {old_stream_name} {new_stream_name} болгон өөрчилсөн."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Тайлбар байхгүй."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} энэ stream-ын тайлбарыг өөрчилсөн."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Хуучин тайлбар"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Шинэ тайлбар"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Forever"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Энэ чат өрөөн дахь мэдээллүүд цаашид хадгалагдах болно."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3551,7 +4112,7 @@ msgstr "{user} солиход [мессеж хадгалах хугацаа](/he
 msgid "You cannot attach a submessage to this message."
 msgstr "Та энэхүү мессежинд дэд мессеж хавсаргах боломжгүй байна."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3561,187 +4122,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Энэ API нь ирж буй webhook ботуудад боломжгүй."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Аккаунт энэ дэд домэйнтай холбоогүй байна"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "БОТ-оос илгээсэн хүсэлтийг тухайн хэрэглэгч зөвшөөрсөнгүй."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Серверийн администратор байх ёстой"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Зөвшөөрөл хангалтгүй"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Энэ төгсгөлийнцэг нь HTTP үндсэн баталгаажуулалтыг шаарддаг."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Үндсэн баталгаажуулалтын зөвшөөрлийн толгой хэсэг буруу"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Үндсэн баталгаажуулалтын зөвшөөрлийн толгой хэсэг байхгүй байна"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook ботууд зөвхөн webhooks-рүү хандах боломжтой"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Таны  {username} аккаунт идэвхгүй байна.  Та аккаунтаа идэвхтэй болгохын тулд байгууллагын админтайгаа холбогдоно уу."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Нууц үг нь хэт хялбар байна."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Дэд домэйн нь 3 болон түүнээс их урттай байна."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Дэд домэйн нь '-' аар эхлэж эсвэл төгсөж болохгүй."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Дэд домэйн нь зөвхөн жижиг үсэг, тоо болон '-' агуулсан байна. "
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Өөрийн жинхэнэ имэйл хаягаа ашиглана уу."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Таны {email} ашиглан бүртгүүлэх гэж буй бүлэг байхгүй байна."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Бүлгийн админаас {email}-д урилга илгээнэ үү."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Таны {email} и-мэйл хаяг нь энэ бүлгийн бүртгэлд бүртгүүлэх боломжтой домайнуудын аль нэгэнд байхгүй байна."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Энэ бүлэгт + агуулсан имэйл хаягийг хориглоно."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Бүх Zulip лицензийг ашиглаж байгаа тул шинэ гишүүд энэ бүлэгт элсэх боломжгүй. Таныг урьсан хүнтэй холбогдож лицензийн тоог нэмэгдүүлэхийг хүсээд дахин оролдоно уу."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Шинэ нууц үг"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Шинэ нууц үгээ баталгаажуулна уу."
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Таны нууц үг хэтэрхий хялбар учир идэвхгүй болсон. Шинэ нууц үг үүсгэхийн тулд нууц үгээ шинэчилнэ үү."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Токен"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Зөвлөмж: Та олон имэйл хаягийг хооронд нь таслалаар оруулж болно."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Хамгийн ихдээ 10 имэйл оруулна уу."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Бид тэрхүү Zulip бүлгийг олж чадсангүй."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Алга болсон topic"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Олон stream-руу илгээх боломжгүй"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Stream алга"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Мессеж нь хүлээн авагчтай байх ёстой"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Буруу мессежийн төрөл"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Буруу хавсралт"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Хавсралтыг устгах явцад алдаа гарлаа. Дараа дахин оролдож үзнэ үү."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Мессеж нь хүлээн авагчтай байх ёстой!"
 
@@ -3798,88 +4359,88 @@ msgstr "Хэрэглэгч ноорог синхрончлохыг идэвхг
 msgid "Draft does not exist"
 msgstr "Ноорог үүсээгүй байна."
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Spoiler агуулгыг харахын тулд Zulip-г нээнэ үү"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Буруу хаяг"
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Таны домэйноос гадуур."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "+ агуулсан имэйл хаягийг зөвшөөрөхгүй."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Системийн ботуудад зориулж нөөцлөгдсөн."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} аль хэдийн аккаунт байна."
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Аль хэдийн аккаунттай байна."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Аккаунт идэвхгүй болсон байна."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Буруу эможи."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Буруу эможи нэр."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Энэ эможи идэвхгүй болсон."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Буруу эможи код."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Эможи буруу нэр."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Эможи буруу төрөл."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Бүлгийн админ эсвэл эможи зохиогч байх ёстой"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Эможи нэр нь үсэг эсвэл цифрээр төгссөн байх ёстой."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Эможи нэр нь зөвхөн жижиг англи үсэг, цифр, хоосон зай, зураас, доогуур зураас агуулсан байх ёстой."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Эможи нэр дутуу байна"
 
@@ -3887,119 +4448,119 @@ msgstr "Эможи нэр дутуу байна"
 msgid "Could not allocate event queue"
 msgstr "Үйл явдлын дарааллыг хуваарилж чадсангүй"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Та нэвтрээгүй байна. API нэвтрэлт болон Хэрэглэгчийн Session байх шаардлагатай."
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "'{stream}' stream байхгүй байна"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "'{stream_id}' ID-тай stream байхгүй байна"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "Бүлгийн эзэн"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "хэрэглэгч"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Зөвхөн {entity}-г идэвхгүй болгох боломжгүй."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Буруу тэмдэглэгээ оруулсан мэдэгдэл: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API ашиглалт хурдны хязгаараас хэтэрсэн"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Алдаатай JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Бүлгийн гишүүн байх ёстой"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Бүлгийн админ байх ёстой"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Бүлгийн эзэн байх ёстой"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Хэрэглэгчийн нэр эсвэл нууц үг буруу байна"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Бүртгэл идэвхгүй болсон"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Энэ бүлэг идэвхгүй болсон"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Таны серверийн мобайл мэдэгдлийн үйлчилгээний бүртгэл идэвхгүй болсон"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Энэ бүлэгт нууц үгийн баталгаажуулалтыг идэвхгүй болгосон"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Таны нууц үг идэвхгүй болсон тул дахин тохируулах шаардлагатай"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "API key алдаатай байна"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Алдаатай API түлхүүр"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Тухайн хүсэлтийг шалгах боломжгүй байна.  {webhook_name} уг хүсэлтийг илгээсэн үү?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "дэд домайн буруу байна"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Хандах эрхгүй байна"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4007,47 +4568,47 @@ msgid ""
 "messages in this topic."
 msgstr "Танд зөвхөн энэ сэдэв дэх хамгийн сүүлийн үеийн {total_messages_allowed_to_move}/{total_messages_in_topic} мессежийг зөөх зөвшөөрөл байна."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Үйлдэл хийгдсэн байна."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Ямар ч хариу үйлдэл байхгүй."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitter хэрэглэгчийн нэр"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "GitHub хэрэглэгчийн нэр"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Гаднаас нэмсэн хаягууд заавал URL-аар хаяглагдсан байх ёстой."
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Буруу гадаад аккаунтын төрөл"
 
@@ -4145,106 +4706,106 @@ msgstr "Productivity"
 msgid "Version control"
 msgstr "Хувилбарын хяналт"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Мессеж хоосон байж болохгүй"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Мессеж нь хоосон байт агуулах ёсгүй"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Буруу оператор: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "'anchor' аргумент дутуу байна."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Хүчингүй anchor"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Хэрэв та Zulip-д шинээр орсон бол манай [гарын авлагыг]({getting_started_url}) үзээрэй!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Хэрэв та Zulip-д шинээр орсон бол манай [гарын авлагыг]({getting_started_url}) үзээрэй!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "Бидэнд мөн [Танай байгууллагыг тохируулах]({organization_setup_url}) гарын авлага байна."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "Бидэнд мөн [Танай байгууллагыг тохируулах]({organization_setup_url}) гарын авлага байна."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Энэ нь [тест бүлэг]({demo_organization_help_url}) бөгөөд 30 хоногийн дараа **автоматаар устгагдана** гэдгийг анхаарна уу."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Сайн уу, Zulip-т тавтай морил!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Энэ бол надаас шууд илгээсэн мессеж, тавтай морил Бот."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Би бас танд тусалж чадна! Хариу бичихийн тулд энэ зурвасын аль нэг хэсэгт товших буюу `r` товчийг дарна уу."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Миний ойлгож байгаа хэдэн мессеж энд байна:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Та [гар утас болон ширээний программ](/апп)-г [татаж авах](/апп) боломжтой. Zulip нь вэб хөтөч дээр маш сайн ажилладаг."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "[Profile settings](#тохиргоо/профайл) руу очоод [profile picture](/help/change-your-profile-picture) нэмж, өөрийн [profile information](/help/edit-your-profile) засна уу."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4253,119 +4814,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "Zulip-д stream-үүд [determine who gets a message](/help/streams-and-topics). Эдгээр нь бусад чатын програмын сувгуудтай төстэй."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Browse and subscribe to streams](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "In Zulip, санаанууд [мессежэнд ву багтсанг таньд хэлдэг](/тусламж/урсгалууд-болон-санаанууд). Эдгээр нь имэйлийн гарчигтай маш төстэй, хөнгөн жинтэй санаанууд юм."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Юу болж байгааг харахын тулд [Сүүлийн санаанууд](#recent)-г үзээрэй! Та зүүн дээд хэсэгт байрлах \"Шууд мессежүүд\" дээр дарж энэ харилцан яриа руу буцаж болно."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "[keyboard shortcuts](#keyboard-shortcuts) - танилцсанаар та манай оффис чатыг илүү хялбар ашиглах боломжтой."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "`?` дарж [cheat sheet](#keyboard-shortcuts) боломжуудтай танилцаарай."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Оффис чат нь [Markdown](/help/format-your-message-using-markdown) **болд**, *налуу*, тэмдэглэгдсэн жагсаалт болон бусад зүйлсийг ашиглахад хялбар форматыг ашигладаг. Загвар хуудсыг үзэхийн тулд [энд](#message-formatting) дарна уу."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Эможи хариу үйлдэл, кодын блок болон бусад олон зүйлийн талаар мэдэхийн тулд манай [мессеж бичих зөвлөмж](/help/messaging-tips)-г үзээрэй!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Манай [гарын авлагыг](/help/getting-started-with-zulip) үзнэ үү, эсвэл [Тусламжийн төв](/help/)-руу хандаж, илүү ихийг мэдэж аваарай!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Уучлаарай, би таны мессежийг ойлгосонгүй. Дараах командуудын аль нэгийг туршиж үзнэ үү:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Энэ нь stream-ын нэрний хажууд байгаа түгжээний дүрсээр тодорхойлогдсон хувийн stream юм."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Хувийн stream нь зөвхөн stream-ын гишүүдэд харагдана."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Энэ чат өрөөнд тохиргоо хийхийн тулд та [Stream settings]({stream_settings_url}) орж  `{initial_private_stream_name}` руу хандана уу."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Энэ бол 'санааны үзүүлэх' сэдэвтэй #**{default_notification_stream_name}** чат өрөөн дэх мессеж юм."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Topic-үүд нь харилцан яриаг эмх цэгцтэй байлгах хэрэгсэл юм."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Та чат өрөөтэй холбоотой мэдээллүүдийг  [Streams and topics]({about_topics_help_url}) эндээс харах боломжтой."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Энэ бол 'усанд сэлэх яст мэлхий' сэдэвтэй #**{default_notification_stream_name}** чат өрөөн дэх мессеж юм."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Ирсэн хариунд буруу JSON байна"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Хариултын формат буруу байна"
 
@@ -4379,45 +4940,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Токен үүсээгүй байна"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Энэ бүлэг мобайл push мэдэгдэлд мессежийн агуулгыг оруулахыг идэвхгүй болгосон"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr " @{user_group_name} группд {full_name} -ийг дурдсан байна:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} таныг дурдсан:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} хүн бүрийг дурдсан:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4429,23 +4990,23 @@ msgstr "Stream-ын өгөгдлийн төрөл буруу"
 msgid "Recipient list may only contain user IDs"
 msgstr "Хүлээн авагчийн жагсаалт нь зөвхөн хэрэглэгчийн ID-г агуулж болно"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Тухайн хэрэглэгч энэ үйлдэлийг хийх эрхгүй байна."
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' нь Zulip ашиглахаа больсон."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "Та бүлгээс гадуур шууд мессежүүд илгээх боломжгүй."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4465,21 +5026,21 @@ msgstr "'{var_name}' аргумент дутуу байна"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Буруу утга байна '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Буруу ачаалал"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Илгээхээр төлөвлөсөн мессеж байхгүй байна"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4516,7 +5077,7 @@ msgstr "Аль нэгийг нь сонгоно уу: 'stream' эсвэл 'strea
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Чат өрөөний ID буруу байна."
 
@@ -4530,7 +5091,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4539,7 +5100,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Гадна хэрэглэгчдийн Чат өрөө идэвхжээгүй байна."
 
@@ -4571,28 +5132,28 @@ msgstr "Topic хоосон байж болохгүй!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Энэ stream-д элсэгчийн мэдээлэл байхгүй байна"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Хувийн Чат Өрөө-ийн элсэгчдийн жагсаалтыг татаж авах боломжгүй байна"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} нь алдаатай хариулт байна."
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name}  нь огноо биш"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} алдаатай үйлдэл байна."
@@ -4603,18 +5164,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} нь бутархай тоо биш байна."
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} нь хэт бага байна"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} нь бүхэл тоон утга биш байна."
@@ -4624,24 +5185,24 @@ msgstr "{var_name} нь бүхэл тоон утга биш байна."
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name}  нь хэт том байна"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} нь лист биш байна"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Буруу {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} хэт урт байна  (limit: {max_length} characters)"
@@ -4651,8 +5212,8 @@ msgstr "{var_name} хэт урт байна  (limit: {max_length} characters)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} нь мөр биш"
@@ -4671,21 +5232,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Энэ бүлэгт нэмэх файлын хэмжээ хэтэрсэн байна."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Зургийн кодыг тайлж чадсангүй; Та зургийн файл оруулсан уу?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Зургийн хэмжээ  их байна."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Гэмтсэн хөдөлгөөнт дүрс."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Танигдахгүй хөдөлгөөнт зургийн формат."
 
@@ -4742,161 +5303,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Нэр хэт урт байна!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Нэр хэт богино байна!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Нэрэнд буруу тэмдэгт байна!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Формат буруу байна!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Энэ нэрийг аль хэдийн хэрэглэгсэн байна!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Нэр эсвэл хэрэглэгчийн нэр буруу байна"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Буруу тохиргооны өгөгдөл!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Ботын төрөл буруу байна"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Интерфэйсийн төрөл буруу байна."
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Ийм бот байхгүй"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Ийм хэрэглэгч байхгүй"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Хэрэглэгч deactivated"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item}  хоосон байж болохгүй."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} буруу урттай {length}; байх ёстой урт {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} нь зөв цагийн бүс биш байна"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name}  hex өнгөний код биш байна"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} нь яг  {length} ийм урттай байна."
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{var_name} - ээс {key_name}  түлхүүр алга болсон байна."
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} нь зөвшөөрөгдсөн_төрөл биш юм"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} буруу)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} нь URL биш байна"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "URL загвар нь '%(username)s'-г агуулсан байх ёстой."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' хоосон байж болохгүй."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Талбарт давхардсан сонголт байх ёсгүй."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}'  нь '{field_name}'-д тохирох сонголт биш байна."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} нь мөр эсвэл бүхэл тооны жагсаалт биш"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} нь мөр эсвэл бүхэл тоо биш"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} урт байхгүй"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} нь алга байна"
@@ -4930,215 +5491,211 @@ msgstr "CSRF алдаа: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "Групп чат уулзалт"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Zulip Cloud Standard дээр ашиглах боломжтой. Хандахын тулд шинэчилнэ үү."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "GIPHY интеграцийг идэвхгүй болгосон"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "Y үнэлгээтэй GIF-г зөвшөөрөх (Маш залуу үзэгчид)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "G үнэлгээтэй GIF-г зөвшөөрөх (Ерөнхий үзэгчид)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "PG үнэлгээтэй GIF-г зөвшөөрөх (Эцэг эхийн зааварчилгаа)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "PG-13 үнэлгээтэй GIF-г зөвшөөрөх (Эцэг эхийн удирдамж - 13-аас доош насны)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "R үнэлгээтэй GIF-г зөвшөөрөх (Хязгаарлагдмал)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Эможи нэр дээрх буруу тэмдэгтүүд"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Үл мэдэгдэх алдаа байна"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Буруу URL загвар байна."
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "URL загвар дахь %(name)r групп нь холбогч загварт байхгүй байна."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Холбогч загвар дахь %(name)r групп URL загварт байхгүй байна."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Хүчингүй дүрүүд нь pygments программын хэл"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Админ, модератор, гишүүд болон зочид"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Админ, модераторууд болон гишүүд"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Админ болон модераторууд"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Зөвхөн админууд"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nobody"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Бүлгийн эзэн"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Бүлгийн админ"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Модератор"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Гишүүн"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Зочин"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-public"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Олон нийтийн"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Хувийн, хуваалцсан түүх"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Хувийн, хамгаалагдсан түүх"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Олон нийтийн, хамгаалагдсан түүх"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Группын бүх гишүүд пост оруулах боломжтой"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Зөвхөн бүлгийн админууд постлох боломжтой"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Зөвхөн бүлгийн админ болон модераторууд постлох боломжтой"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Зөвхөн бүлгийн бүрэн эрхтэй гишүүд постлох боломжтой"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Юникод эможи"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Тусгай эможи"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip нэмэлт эможи"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Хувилбаруудын жагсаалт"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Хүн сонгох"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Богино текст"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Урт текст"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Өдөр сонгох"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Холбоос"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Гадаад аккаунт"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "төлөөний үг"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Үл мэдэгдэх алдаа байна"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Буруу URL загвар байна."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "URL загвар дахь %(name)r групп нь холбогч загварт байхгүй байна."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Холбогч загвар дахь %(name)r групп URL загварт байхгүй байна."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Юникод эможи"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Тусгай эможи"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip нэмэлт эможи"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Эможи нэр дээрх буруу тэмдэгтүүд"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Хүчингүй дүрүүд нь pygments программын хэл"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "Групп чат уулзалт"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Zulip Cloud Standard дээр ашиглах боломжтой. Хандахын тулд шинэчилнэ үү."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "GIPHY интеграцийг идэвхгүй болгосон"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Y үнэлгээтэй GIF-г зөвшөөрөх (Маш залуу үзэгчид)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "G үнэлгээтэй GIF-г зөвшөөрөх (Ерөнхий үзэгчид)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "PG үнэлгээтэй GIF-г зөвшөөрөх (Эцэг эхийн зааварчилгаа)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "PG-13 үнэлгээтэй GIF-г зөвшөөрөх (Эцэг эхийн удирдамж - 13-аас доош насны)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "R үнэлгээтэй GIF-г зөвшөөрөх (Хязгаарлагдмал)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-public"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Олон нийтийн"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Хувийн, хуваалцсан түүх"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Хувийн, хамгаалагдсан түүх"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Олон нийтийн, хамгаалагдсан түүх"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Группын бүх гишүүд пост оруулах боломжтой"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Зөвхөн бүлгийн админууд постлох боломжтой"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Зөвхөн бүлгийн админ болон модераторууд постлох боломжтой"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Зөвхөн бүлгийн бүрэн эрхтэй гишүүд постлох боломжтой"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Админ, модератор, гишүүд болон зочид"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Админ, модераторууд болон гишүүд"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Админ болон модераторууд"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Зөвхөн админууд"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nobody"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Бүлгийн эзэн"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Бүлгийн админ"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Модератор"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Гишүүн"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Зочин"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Үл мэдэгдэх IP хаяг"
@@ -5151,20 +5708,20 @@ msgstr "Үл мэдэгдэх үйлдлийн систем"
 msgid "An unknown browser"
 msgstr "Үл мэдэгдэх интернэт хөтөч"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "'queue_id' аргумент алга"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "'last_event_id' аргумент алга"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "{event_id}-с шинэ арга хэмжээг аль хэдийн хассан байна!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "{event_id} үйл ажиллагаа нь тухайн дараалалд байхгүй байна."
@@ -5202,41 +5759,41 @@ msgstr "Нууц үг буруу байна."
 msgid "User-Agent header missing from request"
 msgstr "Хүсэлтэд хэрэглэгчийн_агентын толгой хэсэг алга"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Шошго хоосон байж болохгүй."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Талбар дор хаяж нэг сонголттой байх ёстой."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Талбарын төрлийг профайлын хураангуй хэсэгт харуулах боломжгүй байна."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Талбарын төрөл буруу."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Профайлын хураангуй хэсэгт зөвхөн 2 хувийн профайлын талбарыг харуулах боломжтой."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Ийм шошготой талбар аль хэдийн байна."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Default custom талбарыг шинэчлэх боломжгүй."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Сүүлчийн гол санааг үйлдвэрлэлд ашиглах боломжгүй"
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend идэвхжээгүй."
 
@@ -5287,7 +5844,7 @@ msgstr "Та дор хаяж нэг имэйл хаягийг зааж өгөх
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5336,19 +5893,19 @@ msgstr "Anchor-ийг зөвхөн төгсгөлд нь хасч болно"
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Илгээгч алга байна"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Хүлээн авагчийн хэрэглэгчийн ID -г харахыг зөвшөөрөхгүй"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Мессеж хуулбарлахад алдаа гарлаа"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr mirroring нь энэхүү бүлэг зөвшөөрөгдөөгүй байна."
 
@@ -5364,42 +5921,46 @@ msgstr "Хэрэглэгчийн дууг хаасан"
 msgid "User is not muted"
 msgstr "Хэрэглэгчийн дуу нээлтэй"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Бот хэрэглэгчидийн хувьд Presence дэмжигдэхгүй."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "{user_id_or_email}-д байгаа мэдээлэл алга"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Үйлчлүүлэгч ямар ч шинэ утгыг дамжуулаагүй."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Үйлчлүүлэгч эможи код эсвэл хариу үйлдлийн төрлийг дамжуулсан тохиолдолд emoji_name-г оруулах ёстой."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Хоосон эсвэл буруу урттай токен"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Буруу APNS токен"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5414,55 +5975,55 @@ msgstr "Дараах аргументуудын дор хаяж нэг нь ба
 msgid "Read receipts are disabled in this organization."
 msgstr "Энэ бүлэгт уншсан баримтыг идэвхгүй болгосон."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Дор хаяж нэг баталгаажуулалтын аргыг идэвхжүүлсэн байх ёстой."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Нэг тест бүлэг байх ёстой."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "{domain} домэйн аль хэдийн танай бүлгийн нэг хэсэг болсон."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "{domain} домэйн олдсонгүй."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Та нэг файл оруулах боломжтой."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Зөвхөн администраторууд үндсэн эможиг өөрчилж болно."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5496,7 +6057,7 @@ msgstr "Экспорт хийгдэж байна"
 msgid "You must upload exactly one icon."
 msgstr "Та яг нэг дүрс байршуулах ёстой."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Холбогч олдсонгүй."
 
@@ -5524,71 +6085,71 @@ msgstr "Хүсэлтийн формат буруу байна"
 msgid "Invalid DSN"
 msgstr "Буруу DSN"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Хувийн stream-ыг default болгох боломжгүй."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Та \"new_description\" эсвэл \"new_group_name\" оруулах хэрэгтэй."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "\"op\"-ын утга буруу. \"add\" эсвэл \"remove\"-ын аль нэгийг зааж өгнө үү."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Групп аль хэдийн ийм нэртэй болсон!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Хийх зүйлгүй. \"Нэмэх\" эсвэл \"устгах\"-ын дор хаяж нэгийг зааж өгнө үү."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} хэрэглэгч {stream_name} чат өрөөнд нэгдлээ."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} хэрэглэгч таны урьсан чат өрөөнд нэгдлээ :"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "({stream_name}) группруу хандах боломжгүй"
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Та хувийн урсгалдаа Zephyr тусгалын хэрэглэгчдийг урих боломжтой."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name}  нь дараах группуудыг үүсгэсэн байна: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name}  нь {stream_str} шинэ групп үүсгэсэн."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "Шинэ группууд"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** stream-ыг {user_name} үүсгэсэн.**Description:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5597,7 +6158,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Дэдмессежинд зориулсан json буруу байна"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Танд энэ файлыг харах эрхгүй алга
"
 
@@ -5621,112 +6182,112 @@ msgstr "Лист жагсаалт хоосон"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "Хэрэглэгч хувийн чатны мэдэгдлийг идэвхгүй болгосон"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Буруу токен"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Буруу файлын нэр"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Та байршуулах файлаа зааж өгөх шаардлагатай"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Тухайн цагт та нэг л файл оруулах боломжтой"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Шинэ мэдээлэл өгөөгүй"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} таныг {group_name} группд нэмсэн."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} таныг {group_name} группээс хассан."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "{user_id}  хэрэглэгч аль хэдийн энэ группын гишүүн болсон байна."
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "{group_id} хэрэглэгчийн групп аль хэдийн энэ группын дэд групп байна."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "{group_id} хэрэглэгчийн групп нь энэ группын дэд групп биш."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Энэ байгууллагад \"аватар\" -ын өөрчлөлтийг идэвхгүй болгосон"
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Энэ байгууллагад имэйл хаягийн өөрчлөлтийг идэвхгүй болгосон."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Хүчингүй default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Таны Zulip нууц үгийг LDAP дээр удирддаг"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Пассворд буруу!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Шинэ нууц үг хэтэрхий сул байна!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Та яг нэг дүрс байршуулах ёстой."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Topic-ийн дууг хаагаагүй"
 
@@ -5787,43 +6348,43 @@ msgstr "Энэ байгууллагад нэг удаагийн цахим шу
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Zoom хандах токен буруу байна"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom -ийн итгэмжлэлийг идэвхжүүлээгүй байна"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Invalid Zoom session identifier"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Хүчингүй Zoom -ын итгэмжлэл"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Zoom дуудлага үүсгэхэд алдаатай"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton тохиргоо хийгдээгүй байна."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "гарын үсэг буруу"
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "BigBlueButton-ийн сервертэй холбогдоход алдаа гарлаа."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "BigBlueButton-ийн сервертэй баталгаажуулахад алдаа гарлаа"
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton сервер гэнэтийн алдаа гаргалаа."
 
@@ -5856,11 +6417,11 @@ msgstr "Invalid payload"
 msgid "Unknown webhook request"
 msgstr "Тодорхойгүй webhook хүсэлт"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Сэдэв хоосон байж болохгүй."
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Контент нь хоосон байж болохгүй"
 
@@ -5887,7 +6448,7 @@ msgstr "Newrelic webhook нь [үүсгэсэн|идэвхжүүлсэн|хүл
 msgid "Events key is missing from payload"
 msgstr "Үйл ажиллагааны түлхүүр payload-д байхгүй байна"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Pivotal payload зохицуулах боломжгүй"
 
@@ -5904,83 +6465,105 @@ msgstr "Slack-с ирсэн мессеж"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Дэд домэйн буруу байна."
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Хүчинтэй Zulip сервер API түлхүүрээр баталгаажуулах ёстой"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID буруу"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "токен төрөл буруу байна"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "user_id эсвэл user_uuid алга байна"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Өгөгдөл ажиллахаа больсон."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Та нууц үгээ солих хэрэгтэй."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "id_token параметр алга"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP буруу"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "mobile_flow_otp болон desktop_flow_otp -ийг хамт ашиглах боломжгүй."
diff --git a/locale/mn/translations.json b/locale/mn/translations.json
index 26323c9bd5..7d621e4a91 100644
--- a/locale/mn/translations.json
+++ b/locale/mn/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(хавсралтад зориулсан файл)",
   "(forever)": "(үүрд)",
   "(hidden)": "(Нуусан)",
-  "(no description)": "(тайлбар байхгүй)",
   "(no topic)": "(хэлэлцэх сэдэв байхгүй)",
   "(or )": "",
   "(you)": "(та)",
   "({message_retention_days} days)": "({message_retention_days} өдөр)",
   "/dark (Switch to the dark theme)": "/хар (Хараар харуулах)",
   "/light (Switch to light theme)": "/цагаан (Цагаанаар харуулах)",
-  "/me is excited (Display action text)": "/сэтгэл хөдлөж байна (үйл хөдлөлийг текстээр харуулах)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/Өнөөдөр хаана хоол идэх вэ? (Санал асуулга үүсгэх)",
-  "/todo (Create a todo list)": "/todo (Хийх ажлийн жагсаалт)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 өдөр",
   "1 hour": "1 цаг",
   "1 week": "1 долоо хоног",
@@ -28,7 +27,7 @@
   "6 hours": "6 цаг",
   "Total messages: {total_messages}": "Нийт мессежүүд: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name}шэйрэлсэн мессежүүдээс хасагдах болно. Энэ үйлдлийг буцаах боломжгүй.
",
-  "Stream will be announced in #{notifications_stream}.
": "Stream нь #{notifications_stream} мэдэгдэх болно.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Нэгээс олон хүний илгээсэн мессежийг хайх боломжгүй.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Та нэгээс олон stream-д хамаарах мессежийг хайж байгаа бөгөөд энэ нь боломжгүй юм.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Та нэгээс олон сэдэвт хамаарах мессежийг хайж байгаа бөгөөд энэ нь боломжгүй юм.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Идэвхтэй эсэх нь тодорхойгүй",
   "Add": "Нэмэх",
   "Add GIF": "GIF нэмэх",
+  "Add a description": "",
   "Add a new alert word": "Шинэ анхааруулах үг нэмэх",
   "Add a new bot": "Шинэ бот нэмэх",
   "Add a new code playground": "Add a new code playground",
@@ -207,6 +207,7 @@
   "Bot": "Бот",
   "Bot email": "Бот имэйл",
   "Bot email (a-z, 0-9, and dashes only)": "Бот имэйл (a-z, 0-9, and dashes only)",
+  "Bot is deactivated": "",
   "Bot owner": "Ботын эзэмшигч",
   "Bot type": "Бот төрөл",
   "Bots": "Ботууд",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Энэ харилцах цонхыг хаа",
   "Code": "",
   "Code playgrounds": "Code playgrounds",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Configure external code playgrounds for your Zulip organization. Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows you to open the code block in the code playground site.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Бичих талбарыг хураах",
   "Collapse direct messages": "Хувийн чатуудыг харах",
   "Collapse message": "Мессеж харах",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Байгууллагадаа баталгаажуулах аргуудыг тохируулна уу.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configure the default streams new users are subscribed to when joining your organization.",
   "Confirm": "Баталгаажуулалт",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Consider searching all public streams.",
   "Contact a moderator to resolve this topic.": "Энэ санааг шийдвэрлэхийн тулд модератортой холбогдоно уу.",
   "Contact a moderator to unresolve this topic.": "Энэ санааг шийдвэрлэхийн тулд модератортой холбогдоно уу.",
@@ -292,6 +294,7 @@
   "Copy code": "код хуулах",
   "Copy link": "Холбоос хуулах",
   "Copy link to message": "Мессежийн холбоосыг хуулна уу",
+  "Copy link to profile": "",
   "Copy link to topic": "Topic-ийн холбоосыг хуулна уу",
   "Copy mention syntax": "Дурдсан синтаксийг хуулах",
   "Copy version": "Хувилбарыг хуулах",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Бүх ноорог устгах",
   "Delete all selected drafts": "",
   "Delete code playground?": "code playground устгах уу?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Тусгай профайлын талбарыг устгах уу?",
   "Delete data export?": "Дата экспортыг устгах уу?",
   "Delete draft": "Ноорог устгах",
@@ -413,7 +417,6 @@
   "Domain": "Домэйн",
   "Don’t allow disposable email addresses": "Нэг удаагийн имэйл хаягийг бүү зөвшөөр",
   "Download": "татах",
-  "Download .zuliprc": " .zuliprc татах",
   "Download botserverrc": " botserverrc татах",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Download config of all active outgoing webhook bots in Zulip Botserver format.",
   "Download file": "Файл татах",
@@ -449,6 +452,7 @@
   "Education (for-profit)": " (for-profit) боловсрол",
   "Education (non-profit)": " (non-profit) боловсрол",
   "Effect": "Нөлөөлөл",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Имэйл",
   "Email address": "Имэйл хаяг",
   "Email address changes are disabled in this organization.": "Энэ байгууллагад имэйл хаягийн өөрчлөлтийг идэвхгүй болгосон.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "Жишээлбэл, Python гэж тэмдэглэгдсэн код блокуудын code playgroundsг тохируулахын тулд та дараахийг тохируулж болно:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Дэлгэрэнгүй жишээ болон техникийн дэлгэрэнгүй мэдээллийг авахын тулд code playgrounds нэмэх талаар тусламжийн төвийн баримт бичгийг үзнэ үү.",
   "For more examples, see the help center documentation on adding linkifiers.": "Дэлгэрэнгүй жишээг тусламжийн төвийн холбогч нэмэх тухай баримт бичгээс харна уу.",
   "Forgot it?": "Мартсан уу?",
@@ -606,6 +610,8 @@
   "Image": "Зураг",
   "In a meeting": "Уулзалтанд",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Идэвхгүй",
   "Inactive bots": "Идэвхгүй ботууд",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "Энэ ботыг удирдах",
   "Manage this user": "Энэ хэрэглэгчийн удирдах",
   "Manage user": "Хэрэглэгч удирдах",
+  "Manage your API key": "",
   "March": "3-р сар",
   "Mark all messages as read": "Бүх мессежийг уншсан болгох",
   "Mark all messages as read?": "Бүх мессежийг уншсан болгох уу?",
+  "Mark all messages as unread": "",
   "Mark as read": "Уншсан болгох",
   "Mark as resolved": "Шийдвэрлэсэн болгох",
   "Mark as unread from here": "Эндээс уншаагүй болгож тэмдэглэх",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mentioned in",
   "Mentions": "Mentions",
   "Menus": "Менюнүүд",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Мессеж #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Мессеж #{stream_name} > {topic_name}",
   "Message actions": "Мессеж үйлдэл",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Мессеж {recipient_label}",
   "Message {recipient_names}": "Мессеж {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Мессеж {recipient_name} ({recipient_status})",
+  "Messages": "Мессеж",
   "Messages in all public streams": "Бүх нийтийн чат өрөөн дээрх мессежүүд",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Хэзээ ч дуусдаггүй",
   "New": "Шинэ",
   "New direct message": "Шинэ хувийн чат",
+  "New direct message from {sender_full_name}": "",
   "New email": "Шинэ имэйл",
   "New message": "Шинэ мессеж",
   "New option": "Шинэ боломж",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Дараагийн уншаагүй хувийн чат",
   "Next unread followed topic": "",
   "Next unread topic": "Дараагийн уншаагүй сэдэв",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Таны хайлтанд таарах бот олдсонгүй.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Тайлбар байхгүй.",
   "No drafts selected": "",
   "No drafts.": "Ноорог байхгүй.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Танай хайлтанд таарах урилга олдсогүй.",
   "No language set": "Хэл тохируулагдаагүй байна",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "No linkifiers set.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Хэрэглэгч олдсонгүй.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Ямар ч сэдвийг шийдсэн гэж тэмдэглээгүй.",
   "No topics match your current filter.": "Таны хайлтанд таарах сэдэв олдсонгүй.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Хэрэглэгчийн групп элсэлт байхгүй.",
   "No user groups": "Хэрэглэгчийн групп алга",
   "No user to subscribe.": "Бүртгүүлэх хэрэглэгч алга.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Энэ Оффис чат бүлгийн хэн ч энэ имэйл хаягийг харах боломжгүй.",
   "Non-profit (registered)": "Ашгийн бус (бүртгэгдсэн)",
   "None": "None",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Таны хадгалсан бүх ботууд идэвхгүй болно гэдгийг анхаарна уу.",
   "Note that organizations are limited to five exports per week.": "Байгууллагууд долоо хоногт таван экспортоор хязгаарлагддаг гэдгийг анхаарна уу.",
   "Nothing to preview": "шалгах зүйл байхгүй",
@@ -932,6 +940,7 @@
   "Other permissions": "Бусад зөвшөөрөлүүд",
   "Other settings": "Бусад тохиргоонууд",
   "Other users in this Zulip organization will be able to see this email address.": "Энэ Оффис чат бүлэг бусад хэрэглэгчид энэ имэйл хаягийг харах боломжтой болно.",
+  "Others": "",
   "Out sick": "Өвчтэй",
   "Outgoing webhook message format": "Гарч буй  webhook мессежийн формат",
   "Override default emoji?": "Үндсэн эможийг өөрчлөх үү?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Stream зурвасуудад сэдэв шаардлагатай",
   "Research": "Судалгаа",
   "Resend": "Дахин илгээх",
-  "Resend invitation": "Урилга дахин илгээх",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Алдаа гарлаа. Дахин оролдоно уу.",
+  "Reset to default notifications": "",
   "Reset zoom": "Zoom-ыг цуцлах",
   "Restore draft": "Ноорог сэргээх",
   "Restrict email domains of new users?": "Шинэ хэрэглэгчдийн имэйл домайныг хязгаарлах уу?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": " Сэдэв эсвэл зурвасын агуулгаас хайлт хийх\" ",
   "Search people": "Хүмүүс хайх",
   "Search results": "Хайлтын үр дүн",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Хэрхэн имэйл тохируулах тухай харах.",
   "Select a stream": "Нэг чат өрөөг сонгох",
   "Select a stream below or change topic name.": "Stream сонгох эсвэл сэдийн нэр өөрчлөх.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Онцолсон зурвасын тоог харах",
   "Show status text": "Статус текстийг харуулах",
   "Show unread counts for": "",
-  "Show/change your API key": "API key-ээ харах/өөрчлөх",
   "Showing messages since {time_string}.": "",
   "Sign up": "Бүртгүүлэх",
   "Silent mentions do not trigger notifications.": "Silent mentions do not trigger notifications.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "Илгээгчийн имэйл хаяг",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "#{stream_name} чат өрөө байхгүй байна. Өөрийн Чат өрөө хуудсан дээрх дагагчидаа удирдаарай.",
   "The stream description cannot contain newline characters.": "Группын тайлбар нь шинэ мөрийн тэмдэгт агуулж болохгүй.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Тэдний нууц үгийг манай системээс устгах бөгөөд тэдний хадгалдаг бүх ботууд идэвхгүй болно.",
   "Theme": "Theme",
+  "There are no bots.": "",
   "There are no current alert words.": "Одоогоор анхааруулах үг байхгүй байна.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Энд ямар ч мессеж алга.",
   "There are no streams you can view in this organization.": "Энэ бүлэгт таны үзэх боломжтой чат өрөө байхгүй.",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Энэ ботыг идэвхгүй болгох боломжгүй.",
   "This bot cannot be edited.": "Энэ ботыг засах боломжгүй.",
   "This bot has been deactivated.": "Энэ бот идэвхгүй болсон.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Энэ нь хэрэглэгчдэд зориулсан  профайл талбарыг арилгах болно.",
   "This will delete the  profile field for 1 user.": "Энэ нь 1 хэрэглэгчийн  профайлын талбарыг устгах болно.",
   "This will delete the  profile field for  users.": "Энэ нь  хэрэглэгчдийн  профайлын талбарыг устгах болно.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Пүрэв гараг",
   "Time": "Цаг",
   "Time format": "Цагийн формат",
@@ -1240,6 +1259,7 @@
   "Today": "Өнөөдөр",
   "Today at {time}": "Өнөөдөр {time}",
   "Toggle first emoji reaction on selected message": "Сонгосон мессеж дээрх анхны эможи хариуг асаах/унтраах",
+  "Toggle preview mode": "",
   "Toggle subscription": "Toggle subscription",
   "Toggle the gear menu": "Toggle the gear menu",
   "Toggle topic mute": "Toggle topic mute",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "Танд энэ бүлгийн чат өрөөнд өөр хэрэглэгч нэмэх зөвшөөрөл байхгүй.",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Танд энэ санаан дах зарим мессежийг зөөх зөвшөөрөл байхгүй байна. Бүх мессежийг зөөхийн тулд зохицуулагчтай холбогдоно уу.",
   "You do not have permission to post in this stream.": "Танд энэ чат өрөөнд нийтлэх зөвшөөрөл байхгүй байна.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "Танд энэ бүлэгт {N, plural, one {# day} other {# days}}-с хуучин мессеж бүхий санааг шийдвэрлэх зөвшөөрөл байхгүй.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Оффис чат сервер  {display_version}",
   "Zulip Server {display_version} (modified)": "Оффис чат сервер  {display_version} (өөрчлөгдсөн)",
   "Zulip Server {display_version} (patched)": "Оффис чат сервер {display_version} (patched)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Оффис чат нь танд сонирхолгүй мэдэгдлийн мессежийг хүлээн авахгүйн тулд санаа болон чат өрөөний дууг хаах боломжийг олгодог. Чат өрөөний дууг хаах нь тухайн чат өрөөний бүх санааг үр дүнтэйгээр хаадаг. Та мөн дууг нь хаасан чат өрөөний санааны дууг гараар хаах эсвэл дууг нь хаасан чат өрөөний дууг нээх боломжтой. Илүү их судлах ",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip хэрэглэгч, хаягийг баталгаажуулах болон мэдэгдэл хүргэхийн тулд имэйл илгээх хэрэгтэй.",
   "Zulip needs your permission to enable desktop notifications.": "Дэлгэцэнд мэдэгдэл хүргэхийн тулд  хандах эрхийг идэвхжүүлнэ үү.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulip-ын орчуулгыг манай сайн дурынхан орчуулсан болно. Хэрэв та тусламаар байвал,  холбоосыг үзээрэй. Орчуулгын зааварчилгаа .",
@@ -1541,6 +1561,9 @@
   "more topics": "бусад сэдвүүд",
   "she/her": "Тэр эмэгтэй/түүний",
   "they/them": "Тэд/тэдний",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Дууслаа! {N} мессежийг уншсан гэж тэмдэглэсэн.} other {Дууслаа! {N} мессежийг уншсан гэж тэмдэглэсэн.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Дууслаа! {N} мессежийг уншаагүй гэж тэмдэглэсэн.} other {Дууслаа! {N} мессежийг уншаагүй гэж тэмдэглэсэн.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/mobile_info.json b/locale/mobile_info.json
index 4376532b4b..eff7c5e8da 100644
--- a/locale/mobile_info.json
+++ b/locale/mobile_info.json
@@ -1,178 +1,178 @@
 {
   "ar": {
-    "not_translated": 119,
-    "total": 405
+    "not_translated": 127,
+    "total": 410
   },
   "be": {
-    "not_translated": 49,
-    "total": 405
+    "not_translated": 5,
+    "total": 410
   },
   "bg": {
-    "not_translated": 300,
-    "total": 405
+    "not_translated": 305,
+    "total": 410
   },
   "bqi": {
-    "not_translated": 338,
-    "total": 405
+    "not_translated": 343,
+    "total": 410
   },
   "ca": {
-    "not_translated": 191,
-    "total": 405
+    "not_translated": 197,
+    "total": 410
   },
   "cs": {
-    "not_translated": 60,
-    "total": 405
+    "not_translated": 68,
+    "total": 410
   },
   "cy": {
-    "not_translated": 154,
-    "total": 405
+    "not_translated": 161,
+    "total": 410
   },
   "da": {
-    "not_translated": 167,
-    "total": 405
+    "not_translated": 172,
+    "total": 410
   },
   "de": {
-    "not_translated": 0,
-    "total": 405
+    "not_translated": 5,
+    "total": 410
   },
   "en_GB": {
     "not_translated": 0,
-    "total": 405
+    "total": 410
   },
   "eo": {
-    "not_translated": 370,
-    "total": 405
+    "not_translated": 375,
+    "total": 410
   },
   "es": {
-    "not_translated": 26,
-    "total": 405
+    "not_translated": 38,
+    "total": 410
   },
   "fa": {
-    "not_translated": 0,
-    "total": 405
+    "not_translated": 15,
+    "total": 410
   },
   "fi": {
-    "not_translated": 89,
-    "total": 405
+    "not_translated": 97,
+    "total": 410
   },
   "fr": {
-    "not_translated": 0,
-    "total": 405
+    "not_translated": 14,
+    "total": 410
   },
   "gl": {
-    "not_translated": 309,
-    "total": 405
+    "not_translated": 314,
+    "total": 410
   },
   "hi": {
-    "not_translated": 275,
-    "total": 405
+    "not_translated": 280,
+    "total": 410
   },
   "hu": {
-    "not_translated": 125,
-    "total": 405
+    "not_translated": 132,
+    "total": 410
   },
   "id": {
-    "not_translated": 309,
-    "total": 405
+    "not_translated": 314,
+    "total": 410
   },
   "it": {
-    "not_translated": 0,
-    "total": 405
+    "not_translated": 14,
+    "total": 410
   },
   "ja": {
-    "not_translated": 55,
-    "total": 405
+    "not_translated": 63,
+    "total": 410
   },
   "ko": {
-    "not_translated": 202,
-    "total": 405
+    "not_translated": 207,
+    "total": 410
   },
   "lt": {
-    "not_translated": 376,
-    "total": 405
+    "not_translated": 381,
+    "total": 410
   },
   "lv": {
-    "not_translated": 307,
-    "total": 405
+    "not_translated": 313,
+    "total": 410
   },
   "ml": {
-    "not_translated": 370,
-    "total": 405
+    "not_translated": 375,
+    "total": 410
   },
   "mn": {
-    "not_translated": 107,
-    "total": 405
+    "not_translated": 115,
+    "total": 410
   },
   "nl": {
-    "not_translated": 213,
-    "total": 405
+    "not_translated": 218,
+    "total": 410
   },
   "pl": {
-    "not_translated": 221,
-    "total": 405
+    "not_translated": 226,
+    "total": 410
   },
   "pt": {
-    "not_translated": 193,
-    "total": 405
+    "not_translated": 198,
+    "total": 410
   },
   "pt_BR": {
     "not_translated": 339,
     "total": 388
   },
   "pt_PT": {
-    "not_translated": 41,
-    "total": 405
+    "not_translated": 50,
+    "total": 410
   },
   "ro": {
-    "not_translated": 108,
-    "total": 405
+    "not_translated": 116,
+    "total": 410
   },
   "ru": {
-    "not_translated": 0,
-    "total": 405
+    "not_translated": 5,
+    "total": 410
   },
   "si": {
-    "not_translated": 254,
-    "total": 405
+    "not_translated": 260,
+    "total": 410
   },
   "sr": {
-    "not_translated": 0,
-    "total": 405
+    "not_translated": 15,
+    "total": 410
   },
   "sv": {
-    "not_translated": 350,
-    "total": 405
+    "not_translated": 355,
+    "total": 410
   },
   "ta": {
-    "not_translated": 343,
-    "total": 405
+    "not_translated": 348,
+    "total": 410
   },
   "tl": {
     "not_translated": 373,
     "total": 396
   },
   "tr": {
-    "not_translated": 104,
-    "total": 405
+    "not_translated": 0,
+    "total": 410
   },
   "uk": {
-    "not_translated": 208,
-    "total": 405
+    "not_translated": 213,
+    "total": 410
   },
   "vi": {
-    "not_translated": 103,
-    "total": 405
+    "not_translated": 111,
+    "total": 410
   },
   "zh_Hans": {
-    "not_translated": 17,
-    "total": 405
+    "not_translated": 29,
+    "total": 410
   },
   "zh_Hant": {
-    "not_translated": 292,
-    "total": 405
+    "not_translated": 297,
+    "total": 410
   },
   "zh_TW": {
-    "not_translated": 158,
-    "total": 405
+    "not_translated": 163,
+    "total": 410
   }
 }
diff --git a/locale/nl/LC_MESSAGES/django.po b/locale/nl/LC_MESSAGES/django.po
index 27f1c5d475..05db28cc26 100644
--- a/locale/nl/LC_MESSAGES/django.po
+++ b/locale/nl/LC_MESSAGES/django.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Tim Abbott , 2021,2023\n"
 "Language-Team: Dutch (http://app.transifex.com/zulip/zulip/language/nl/)\n"
@@ -22,57 +22,51 @@ msgstr ""
 "Language: nl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Geen toegang voor gastgebruikers"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Ongeldige organisatie"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Publieke kanalen"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Privékanalen"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Starttiijd ligt na de eindtijd. Start: {start}, Eind: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Geen statistieken beschikbaar. Pas dit aan bij de admin instellingen."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Ongeldige parameters"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -81,7 +75,7 @@ msgid ""
 "users to join."
 msgstr "Jouw organisatie heeft geen resterende Zulip-licenties en kan geen nieuwe gebruikers meer accepteren. [Verhoog het aantal licenties]({billing_page_link}) of [deactiveer inactieve gebruikers]({deactivate_user_help_page_link}) om nieuwe gebruikers toe te laten treden."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -90,7 +84,7 @@ msgid ""
 "join."
 msgstr "Jouw organisatie heeft nog maar 1 resterende Zulip-licentie over. Je kan [het aantal licenties verhogen]({billing_page_link}) of [inactieve gebruikers deactiveren]({deactivate_user_help_page_link}) om meer dan 1 nieuwe gebruiker toe te laten treden."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -99,7 +93,7 @@ msgid ""
 "join."
 msgstr "Jouw organisatie heeft nog maar 2 resterende Zulip-licenties over. Je kan [het aantal licenties verhogen]({billing_page_link}) of [inactieve gebruikers deactiveren]({deactivate_user_help_page_link}) om meer dan 2 nieuwe gebruiker toe te laten treden."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -108,7 +102,7 @@ msgid ""
 "join."
 msgstr "Jouw organisatie heeft nog maar 3 resterende Zulip-licenties over. Je kan [het aantal licenties verhogen]({billing_page_link}) of [inactieve gebruikers deactiveren]({deactivate_user_help_page_link}) om meer dan 3 nieuwe gebruiker toe te laten treden."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -117,11 +111,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Een nieuwe gebruiker ({email}) kon niet toetreden tot jouw organisatie omdat alle Zulip-licenties in gebruik zijn. [Verhoog het aantal licenties]({billing_page_link}) of [deactiveer inactieve gebruikers]({deactivate_user_help_page_link}) om nieuwe gebruikers toe te laten treden."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Alle Zulip-licenties voor deze organisatie zijn momenteel in gebruik."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -137,124 +131,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Aankopen met meer dan {max_licenses} kunnen niet verwerkt worden via deze pagina. Contacteer alsjeblieft {email} om de upgrade te voltooien."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} eindigt over {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Dit is een onbekende betaalmethode. Neem alsjeblieft contact op met {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Er is iets mis gegaan. Neem alsjeblieft contact op met {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Er is iets mis gegaan. Herlaad alsjeblieft de pagina."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Er is iets mis gegaan. Wacht alsjeblieft een paar seconden en probeer het opnieuw."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -262,54 +256,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Jouw organisatie's aanvraag voor gesponsorde hosting is aanvaard! Je bent geüpgraded naar {plan_name}, zonder meerkost. {emoji}\n\nWe zouden het ten zeerste op prijs stellen als je {begin_link} Zulip zou kunnen weergeven als sponsor op jouw website{end_link}!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Ongeldige parameters"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Fout"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -318,8 +319,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Interne serverfout"
 
@@ -424,7 +458,7 @@ msgstr "Actief per 15 dagen"
 msgid "Total users"
 msgstr "Totaal aantal gebruikers"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Gebruikers"
 
@@ -564,36 +598,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Facturering"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Annuleren"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Bevestig"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -615,6 +745,451 @@ msgstr "Categorieën"
 msgid "All"
 msgstr "Alle"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -634,11 +1209,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -653,12 +1224,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Aanmaken organisatie"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -691,51 +1262,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organisatie"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -751,14 +1319,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -806,7 +1366,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Aanmelden"
 
@@ -839,8 +1399,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Inloggen"
 
@@ -873,26 +1433,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Nu proberen."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Berichten"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1115,21 +1671,21 @@ msgstr "Guest gebruikers"
 msgid "Normal users"
 msgstr "Gewone gebruikers"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Sluiten"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Bijwerken"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2352,7 +2908,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2372,7 +2928,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2382,12 +2947,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "E-mailadres"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Vind accounts"
 
@@ -2419,7 +2984,7 @@ msgstr "Integratie"
 msgid "Desktop & mobile apps"
 msgstr "Desktop & mobiele apps"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nieuwe organisatie"
 
@@ -2787,12 +3352,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2801,11 +3362,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2974,6 +3530,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Herstel je wachtwoord"
@@ -3131,123 +3703,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Veld id {id} niet gevonden."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Sommige e-mails zijn niet gevalideerd, dus we hebben geen uitnodigingen gestuurd."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "We konden niemand uitnodigen."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3277,72 +3833,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Je organisatie heeft het bewerken van berichten uitgeschakeld"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Je bent niet bevoegd dit bericht te bewerken"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Je organisatie heeft het bewerken van berichten uitgeschakeld"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Je bent niet bevoegd dit bericht te bewerken"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3361,137 +3917,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Ongeldig(e) bericht(en)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Kan bericht niet opmaken"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3500,38 +4061,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Geen beschrijving."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3545,7 +4106,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3555,187 +4116,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Deze API is niet beschikbaar voor inkomende webhook-bots."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Account is niet verbonden met dit subdomein"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Dit eindpunt accepteert geen botverzoeken."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Onvoldoende rechten"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Dit endpoint vereist HTTP basic authenticatie."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Ongeldige autorizatie header voor basic auth"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook-bots hebben alleen toegang tot webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomein moet minimaal 3 tekens lang zijn."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomein kan niet beginnen of eindigen met een '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomein mag alleen kleine letters, cijfers en '-en' bevatten."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Gebruik je echte e-mailadres."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "De organisatie waar je bij wilt aansluiten met {email} bestaat hier niet."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Vraag een uitnodiging voor {email} aan bij de organisatiebeheerder."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Je e-mailadres, {email}, bevindt zich niet in een van de domeinen die zich mogen registreren voor accounts in deze organisatie."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nieuw wachtwoord"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Geef maximaal 10 e-mailadressen op."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Ontbrekend onderwerp"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Kan niet naar meerdere kanalen sturen"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Ontbrekend kanaal"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Bericht moet ontvangers hebben"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Ongeldig berichttype"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Ongeldige bijlage"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3792,88 +4353,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Ongeldig adres."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Buiten je domein."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Heeft al een account."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Account is gedeactiveerd."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Emoji-naam ontbreekt"
 
@@ -3881,119 +4442,119 @@ msgstr "Emoji-naam ontbreekt"
 msgid "Could not allocate event queue"
 msgstr "Kan wachtrij voor gebeurtenissen niet toewijzen"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Niet ingelogd: API-authenticatie of gebruikerssessie vereist"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Kanaal '{stream}' bestaat niet"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Kanaal met ID '{stream_id}' bestaat niet"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "organisatie-eigenaar"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "gebruiker"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API-gebruik overschrijdt gebruikslimiet"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Misvormde JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Account is gedeactiveerd"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Deze organisatie is gedeactiveerd"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Ongeldige API key"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Misvormde API key"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Ongeldig subdomein"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Verboden toegang"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4001,47 +4562,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4139,106 +4700,106 @@ msgstr "Productiviteit"
 msgid "Version control"
 msgstr "Versiebeheersing"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Bericht kan niet leeg zijn"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Bericht kan geen 'null bytes' bevatten"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Ongeldige smalle operator: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4247,119 +4808,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4373,45 +4934,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token bestaat niet"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} vermeldde jou:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} vermeldde iedereen:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4423,23 +4984,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Gebruiker niet geautoriseerd voor deze opvraag"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4459,21 +5020,21 @@ msgstr "Ontbrekend '{var_name}' argument"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Slechte waarde voor '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4510,7 +5071,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4524,7 +5085,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4533,7 +5094,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4565,28 +5126,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4597,18 +5158,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4618,24 +5179,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4645,8 +5206,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4665,21 +5226,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4736,161 +5297,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Naam te lang!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Naam te kort!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Ongeldige tekens in de naam!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Verkeerde naam of gebruikersnaam"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Ongeldig bottype"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Ongeldig interfacetype"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Niet zo'n bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Niet zo'n gebruiker"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} is onjuist)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} is geen URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4924,215 +5485,211 @@ msgstr "CSRF fout: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Ongeldigetekens in emoji-naam"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Beheerders, moderators, leden en gasten"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Beheerders, moderators en leden"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Beheerders en moderators"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Alleen beheerders"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Niemand"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Organisatie-eigenaar"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Organisatiebeheerder"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderator"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Lid"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Gast"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Publiek"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Alle kanaalleden kunnen plaatsen"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Alleen organisatiebeheerders kunnen plaatsen"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Alleen organisatiebeheerders en moderators kunnen plaatsen."
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode emoji"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Aangepaste emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip extra emoji"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode emoji"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Aangepaste emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip extra emoji"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Ongeldigetekens in emoji-naam"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Publiek"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Alle kanaalleden kunnen plaatsen"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Alleen organisatiebeheerders kunnen plaatsen"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Alleen organisatiebeheerders en moderators kunnen plaatsen."
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Beheerders, moderators, leden en gasten"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Beheerders, moderators en leden"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Beheerders en moderators"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Alleen beheerders"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Niemand"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Organisatie-eigenaar"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Organisatiebeheerder"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderator"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Lid"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Gast"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5145,20 +5702,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Ontbrekend 'queue_id' argument"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Ontbrekend 'last_event_id' argument"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5196,41 +5753,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Ongeldig veldtype."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5281,7 +5838,7 @@ msgstr "Je moet minimaal één e-mailadres opgeven."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5330,19 +5887,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Ontbrekende afzender"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Ongeldig gespiegeld bericht"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5358,42 +5915,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Aanwezigheid wordt niet ondersteund voor botgebruikers."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Leeg token of onjuiste lengte"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Ongeldige APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5408,55 +5969,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Er moet minimaal één authenticatiemethode worden ingeschakeld."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Je moet exact één bestand uploaden."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5490,7 +6051,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Je moet precies één pictogram uploaden."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5518,71 +6079,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Het kanaal heeft die naam al!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Niets te doen. Geef minimaal één op van \"toevoegen\" of \"verwijderen\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5591,7 +6152,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Je bent niet geautoriseerd om dit bestand te zien.
"
 
@@ -5615,112 +6176,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Je moet een te uploaden bestand opgeven"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Je mag maar één bestand tegelijk uploaden"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Geen nieuwe gegevens opgegeven"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "E-mail adreswijzigingen uitgeschakeld in deze organisatie."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Verkeerd wachtwoord!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Je moet precies één avatar uploaden"
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5781,43 +6342,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5850,11 +6411,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr "Onbekend webhook-verzoek"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Onderwerp kan niet leeg zijn"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Inhoud kan niet leeg zijn"
 
@@ -5881,7 +6442,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Kan cruciale lading niet verwerken"
 
@@ -5898,83 +6459,105 @@ msgstr "Bericht van Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Moet worden gevalideerd met een geldige Zulip-server-API-sleutel"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Ongeldig tokentype"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Ongeldig OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/nl/translations.json b/locale/nl/translations.json
index fe99902657..6995506631 100644
--- a/locale/nl/translations.json
+++ b/locale/nl/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(altijd)",
   "(hidden)": "(verborgen)",
-  "(no description)": "(geen beschrijving)",
   "(no topic)": "(geen onderwerp)",
   "(or )": "",
   "(you)": "(jij)",
   "({message_retention_days} days)": "({message_retention_days} dagen)",
   "/dark (Switch to the dark theme)": "/dark (Schakel naar donkere modus)",
   "/light (Switch to light theme)": "/light (Schakel naar lichte modus)",
-  "/me is excited (Display action text)": "/me is opgewonden (Tonen actietekst)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/ poll Waar gaan we vandaag lunchen? (Maak een peiling)",
-  "/todo (Create a todo list)": "/todo (Aanmaken todo lijst)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dag",
   "1 hour": "1 uur",
   "1 week": "1 week",
@@ -28,7 +27,7 @@
   "6 hours": "6 uur",
   "Total messages: {total_messages}": "Totaal aantal berichten: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} zal worden verwijderd uit de berichten waar het werd gedeeld. Deze actie kan niet ongedaan worden gemaakt.
",
-  "Stream will be announced in #{notifications_stream}.
": "Kanaal wordt aangekondigd over #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Je zoekt naar berichten die door meer dan één persoon zijn verzonden, wat niet mogelijk is.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "YJe zoekt naar berichten die tot meer dan één kanaal behoren, wat niet mogelijk is.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Je zoekt naar berichten die bij meer dan één onderwerp horen, wat niet mogelijk is.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Toevoegen",
   "Add GIF": "Toevoegen GIF",
+  "Add a description": "",
   "Add a new alert word": "Voeg een nieuw waarschuwingswoord toe",
   "Add a new bot": "Toevoegen nieuwe bot",
   "Add a new code playground": "Toevoegen nieuwe code-zandbak",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Bot e-mailadres",
   "Bot email (a-z, 0-9, and dashes only)": "Bot e-mailadres (a-z, 0-9, en alleen streepjes)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Bottype",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "Code",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configureer de authenticatiemethode voor jouw organisatie.",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "Bevestig",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "Kopiëren code",
   "Copy link": "Link kopiëren",
   "Copy link to message": "Kopiëren link naar bericht",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "Kopiëren vermeldingssyntax",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Verwijder concept",
@@ -413,7 +417,6 @@
   "Domain": "Domein",
   "Don’t allow disposable email addresses": "",
   "Download": "Downloaden",
-  "Download .zuliprc": "Downloaden .zuliprc",
   "Download botserverrc": "Download botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "Bestand downloaden",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Effect",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-mailadres",
   "Email address": "E-mailadres",
   "Email address changes are disabled in this organization.": "E-mail adreswijzigingen uitgeschakeld in deze organisatie.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Afbeelding",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Inactieve bots",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "Maart",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Markeer als gelezen",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Vermeldingen",
   "Menus": "Menu's",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Berichtfuncties",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "Berichten",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "Nieuw",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Nieuw e-mailadres",
   "New message": "Nieuw bericht",
   "New option": "Nieuwe optie",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Volgende ongelezen bericht",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Geen beschrijving.",
   "No drafts selected": "",
   "No drafts.": "Geen concepten.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "Geen taal ingesteld",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Geen linkifiers ingesteld.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Geen",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Let op: alle bots die je onderhoudt worden uitgeschakeld.",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "Niets te bekijken",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Concept herstellen",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Zoek naar mensen",
   "Search results": "Zoekresultaten",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Bekijk e-mailconfiguratie",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Toon/wijzig je API key",
   "Showing messages since {time_string}.": "",
   "Sign up": "Aanmelden",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Donderdag",
   "Time": "Tijd",
   "Time format": "Tijdformaat",
@@ -1240,6 +1259,7 @@
   "Today": "Vandaag",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "Optiemenu wisselen",
   "Toggle topic mute": "Berichtdemping wisselen",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip gebruikt email om de e-mailadressen van gebruikers te controleren en notificaties te sturen",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "meer onderwerpen",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/no/LC_MESSAGES/django.po b/locale/no/LC_MESSAGES/django.po
index f5c9468860..c959ed1869 100644
--- a/locale/no/LC_MESSAGES/django.po
+++ b/locale/no/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME \n"
 "Language-Team: LANGUAGE \n"
@@ -17,56 +17,50 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -75,7 +69,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -83,7 +77,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than one user to join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -91,7 +85,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than two users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -99,7 +93,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than three users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -108,11 +102,11 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -128,124 +122,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this "
 "page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -255,54 +249,61 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -312,8 +313,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -424,7 +462,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr ""
 
@@ -566,36 +604,138 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr ""
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -617,6 +757,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -636,11 +1221,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -655,12 +1236,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -693,103 +1274,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -805,14 +1331,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -861,7 +1379,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
@@ -894,8 +1412,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr ""
 
@@ -929,26 +1447,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1180,21 +1694,21 @@ msgstr ""
 msgid "Normal users"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2451,7 +2965,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2464,12 +2988,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr ""
 
@@ -2501,7 +3025,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2868,12 +3392,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2882,11 +3402,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -3059,6 +3574,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3222,125 +3755,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3370,72 +3885,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3454,136 +3969,141 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3593,38 +4113,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3639,7 +4159,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3649,187 +4169,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3886,88 +4406,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3975,166 +4495,166 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4232,106 +4752,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4339,119 +4859,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4465,45 +4985,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4515,23 +5035,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4551,21 +5071,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4602,7 +5122,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4616,7 +5136,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4625,7 +5145,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4657,28 +5177,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4689,18 +5209,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4710,24 +5230,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4737,8 +5257,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4757,21 +5277,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4828,161 +5348,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5016,215 +5536,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4983
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4987
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5027
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5048
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5053
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5237,20 +5753,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5288,41 +5804,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5373,7 +5889,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5422,19 +5938,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5450,42 +5966,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5500,55 +6020,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5582,7 +6102,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5610,71 +6130,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5683,7 +6203,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5707,112 +6227,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5873,43 +6393,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5942,11 +6462,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5973,7 +6493,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5990,83 +6510,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/no/translations.json b/locale/no/translations.json
index 20cae1ac7c..bb916efbcb 100644
--- a/locale/no/translations.json
+++ b/locale/no/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dag",
   "1 hour": "1 time",
   "1 week": "1 uke",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Legg til",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "Legg til en ny bot",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "",
+  "{N, plural, one {# participant} other {# participants}}": "",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "",
diff --git a/locale/pl/LC_MESSAGES/django.po b/locale/pl/LC_MESSAGES/django.po
index 6a4c49d78c..fbad024e4d 100644
--- a/locale/pl/LC_MESSAGES/django.po
+++ b/locale/pl/LC_MESSAGES/django.po
@@ -18,7 +18,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Mateusz Galazka , 2021\n"
 "Language-Team: Polish (http://app.transifex.com/zulip/zulip/language/pl/)\n"
@@ -28,57 +28,51 @@ msgstr ""
 "Language: pl\n"
 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Brak dostępu dla gości"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Nieprawidłowa organizacja"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Publiczne kanały"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Prywatne kanały"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Dane analityczne niedostępne. Skontaktuj się z administratorem serwera."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Nieprawidłowe parametry"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -87,7 +81,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -114,7 +108,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -123,11 +117,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -143,124 +137,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} kończy się w {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Nieznana metoda płatności. Proszę skontaktuj się z {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Coś poszło nie tak. Proszę skontaktuj się z {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Coś poszło nie tak. Spróbuj odświeżyć stronę."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Coś poszło nie tak. Poczekaj kilka sekund i spróbuj ponownie."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -268,54 +262,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Nieprawidłowe parametry"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Błąd"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -324,8 +325,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Wewnętrzny błąd serwera"
 
@@ -430,7 +464,7 @@ msgstr "Aktywni ostatnie 15 dni"
 msgid "Total users"
 msgstr "Wszyscy"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Użytkownicy"
 
@@ -570,36 +604,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Rozliczenie"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Anuluj"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Powterdź"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -621,6 +751,451 @@ msgstr "Kategorie"
 msgid "All"
 msgstr "Wszystko"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -640,11 +1215,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -659,12 +1230,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Stwórz organizację"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -697,51 +1268,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Skontaktuj się ze wsparciem"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organizacja"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Wiadomość"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -757,14 +1325,6 @@ msgstr "Awatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -812,7 +1372,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Zarejestruj"
 
@@ -845,8 +1405,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Zaloguj się"
 
@@ -879,26 +1439,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Spróbuj teraz."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Wiadomości"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1121,21 +1677,21 @@ msgstr "Goście"
 msgid "Normal users"
 msgstr "Zwykli użytkownicy"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Zamknij"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Zaktualizuj"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2358,7 +2914,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2378,7 +2934,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2388,12 +2953,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Adres email"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Znajdź konta"
 
@@ -2425,7 +2990,7 @@ msgstr "Integracje"
 msgid "Desktop & mobile apps"
 msgstr "Aplikacje komputerowe i mobilne"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nowa organizacja"
 
@@ -2793,12 +3358,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2807,11 +3368,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2980,6 +3536,22 @@ msgstr "Cym się interesujesz?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Zresetuj hasło"
@@ -3137,123 +3709,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Brak pola id {id}."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Twoje konto jest zbyt nowe aby wysyłać zaproszenia. Zapytaj administratora organizacji lub innego uzytkownika."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Niektórych emaili nie udało się potwierdzić, więc nie wysłano żadnych zaproszeń."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Nie mogliśmy nikogo zaprosić."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3283,72 +3839,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Twoja organizacja wyłączyła możliwość edycji wiadomości."
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Nie masz pozwolenia na edycję tej wiadomości"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Twoja organizacja wyłączyła możliwość edycji wiadomości."
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Nie masz pozwolenia na edycję tej wiadomości"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3367,137 +3923,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Nieprawidłowa wiadomość"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Nie można pokazać wiadomości"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Istnieje już niestandardowa emoji o tej nazwie."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3506,38 +4067,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Brak opisu."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3551,7 +4112,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3561,187 +4122,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Konto nie jest powiązane z tą subdomeną"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Musisz być administratorem serwera"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Niewystarczające pozwolenie"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Nieprawidłowy nagłówek autoryzacji dla basic auth"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Boty typu webhook mają dostęp tyko do webhooków"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomena musi mieć 3 lub więcej znaków."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomena nie może zaczynać się ani kończyć znakiem \"-\"."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomena może składać się tylko z małych liter, cyfr i znaków \"-\"."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Użyj swojego prawdziwego adresu email."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Organizacja, do której próbujesz dołączyć email'em {email}, nie istnieje."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Poproś administratora organizacji o zaproszenie na email {email}."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Domena twojego adresu email {email}, jest na liście zakazanych dla tej organizacji."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nowe hasło"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Wporowadź maks. 10 adresów email."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Brak wątku"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Nie można wysyłać jednocześnie do wielu kanałów"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Brak kanału"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Wiadomość musi mieć odbiorcę"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Nieprawidłowy typ wiadomości"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Nieprawidłowy załącznik"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Wystąpił błąd podczas usuwania załącznika. Spróbuj ponownie później."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3798,88 +4359,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Nieprawidłowy adres."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Poza Twoją domeną."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Posiada już konto."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Konto zostało zdezaktywowane."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Nieprawidłowa niestandardowa emoji."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nieprawidłowa nazwa niestandardowej emoji."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Ta niestandardowa emoji została zdezaktywowana."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Nieprawidłowy kod emoji."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nie poprawna nazwa emoji"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Nieprawidłowy rodzaj emoji."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Musisz być administratorem organizacji lub twórcom emoji"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3887,119 +4448,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "Nie można stworzyć kolejki zdarzeń"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Nie jesteś zalogowany: wymagane uwierzytelnienie API lub sesja użytkownika"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Kanał '{stream}' nie istnieje"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "właściciel organizacji"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "użytkownik"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Nieprawidłowy JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Musisz być administratorem organizacji"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Konto jest zdezaktywowane"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Ta organizacja została zdezaktywowana."
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Nieprawidłowy klucz API"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Nieprawidłowa subdomena"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Odmowa dostępu"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4007,47 +4568,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Ta reakcja już istnieje."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reakcja nie istnieje."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4145,106 +4706,106 @@ msgstr "Produktywność"
 msgid "Version control"
 msgstr "Kontrola wersji"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Wiadomość musi mieć treść"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Wiadomość nie może być pusta"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Cześć, witaj w Zulipie!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4253,119 +4814,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4379,45 +4940,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token nie istnieje"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4429,23 +4990,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Użytkownik nie jest uprawniony do tego zapytania."
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4465,21 +5026,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4516,7 +5077,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4530,7 +5091,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4539,7 +5100,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4571,28 +5132,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Dane subskrybenta są niedostępnę w tym kanale."
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4603,18 +5164,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4624,24 +5185,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4651,8 +5212,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4671,21 +5232,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Przesłane dane przekraczają limit twojej organizacji."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Rozmiar obrazu przekracza limit,"
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4742,161 +5303,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nazwa jest zbyt długa!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nazwa jest zbyt krótka!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Nieprawidłowe znaki w nazwie!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Nieprawidłowy format!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Nazwa użytkownika jest już używana!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Niewłaściwa nazwa lub nazwa użytkownika"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Nieprawidłowa konfiguracja!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Nieprawidłowy rodzaj bota"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Nieprawidłowy interfejs"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Nie ma takiego bota"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Nie ma takiego użytkownika"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Użytkownik jest zdezaktywowany"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4930,215 +5491,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "wydarzenia na kanale"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Nieprawidłowe znaki w nazwie emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Tylko administratorzy"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nikt"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administrator organizacji"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Członek"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Gość"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Publiczny"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Prywatny, otwarta historia"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Prywatny, zamknięta historia"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Wszyscy uczestnicy kanału mogą wysyłać wiadomości"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Spersonalizowane emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Lista opcji"
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Krótki tekst"
-
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Długi tekst"
-
-#: zerver/models.py:5043
-msgid "Date picker"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
+
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Spersonalizowane emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Nieprawidłowe znaki w nazwie emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "wydarzenia na kanale"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Publiczny"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Prywatny, otwarta historia"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Prywatny, zamknięta historia"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Wszyscy uczestnicy kanału mogą wysyłać wiadomości"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Tylko administratorzy"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nikt"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administrator organizacji"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Członek"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Gość"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Nieznany adres IP"
@@ -5151,20 +5708,20 @@ msgstr "nieznany system operacyjny"
 msgid "An unknown browser"
 msgstr "Nieznana przeglądarka"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Brak argumentu 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Brak argumentu 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5202,41 +5759,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Nieprawidłowy typ pola"
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5287,7 +5844,7 @@ msgstr "Określ przynajmniej jeden adres email."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5336,19 +5893,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Brak nadawcy"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "nieprawdłowa wiadomość-mirror"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5364,42 +5921,46 @@ msgstr "Użytkownik jest już wyciszony"
 msgid "User is not muted"
 msgstr "Użytkownik nie jest wyciszony"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Pusty lub nieprawidłowy token długości"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Nieprawidłowy token APNS"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5414,55 +5975,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Należy włączyć przynajmniej jedną metodę uwierzytelniania."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Musisz przesłać dokładnie jeden plik."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5496,7 +6057,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Prześlij dokładnie jedną ikonę."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5524,71 +6085,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Kanał już ma tę nazwę!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Brak polecenia. Określ przynajmniej jedno \"dodaj\" lub \"skasuj\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Możesz zaprosić tylko innych użytkowników Zephyr do kanałów prywatnych."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "nowe kanały"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5597,7 +6158,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Nie jesteś uprawniony do przeglądania tego pliku.
"
 
@@ -5621,112 +6182,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Nieprawidłowa nazwa pliku"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Określ plik do przesłania"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Możesz przesyłać tylko pojedyncze pliki"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nie podano nowych danych"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Zmiany adresu email są wyłączone w tej organizacji."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Niewłaściwe hasło!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Prześlij dokładnie jeden awatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Temat nie jest wyciszony"
 
@@ -5787,43 +6348,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5856,11 +6417,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr "Nieznany webhook request"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Należy określić wątek"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Treść nie może być pusta"
 
@@ -5887,7 +6448,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Nie można obsłużyć: Pivotal payload"
 
@@ -5904,83 +6465,105 @@ msgstr "Wiadomość ze Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Należy zweryfikować poprawnym kluczem API serwera Zulp"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Nieprawidłowy rodzaj tokenu."
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Nieprawidłowy OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/pl/translations.json b/locale/pl/translations.json
index 0006f252d6..a322304de4 100644
--- a/locale/pl/translations.json
+++ b/locale/pl/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(załączony plik)",
   "(forever)": "(na zawsze)",
   "(hidden)": "(ukryte)",
-  "(no description)": "(brak opisu)",
   "(no topic)": "(brak wątku)",
   "(or )": "",
   "(you)": "(ty)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dzień",
   "1 hour": "1 godzina",
   "1 week": "1 tydzień",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Dodaj",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "Dodaj nowy alert",
   "Add a new bot": "Dodaj nowego bota",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Rodzaj bota",
   "Bots": "Boty",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "Kod",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Skonfiguruj metody uwierzytelnienia dla Twojej organizacji.",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "Powterdź",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "Kopiuj link",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Usuń wersję roboczą",
@@ -413,7 +417,6 @@
   "Domain": "Domena",
   "Don’t allow disposable email addresses": "",
   "Download": "Pobierz",
-  "Download .zuliprc": "Pobierz .zuliprc",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "Pobierz plik",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efekt",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Adres email",
   "Email address": "Adres email",
   "Email address changes are disabled in this organization.": "Zmiany adresu email są wyłączone w tej organizacji.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Obraz",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Nieaktywne boty",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "Marzec",
   "Mark all messages as read": "Oznacz wszystkie wiadomości jako przeczytane",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Oznacz jako przeczytane",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Wspomniany w",
   "Mentions": "Oznaczenia",
   "Menus": "Menu",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Akcje wiadomości",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "Wiadomości",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "Nowy",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Nowy email",
   "New message": "Nowa wiadomość",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Następny nieprzeczytany wątek",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Brak botów pasujących do zdefiniowanego filtra",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Brak opisu.",
   "No drafts selected": "",
   "No drafts.": "Brak kopi roboczych.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Brak zaproszeń pasujących do zdefinowanego filtra.",
   "No language set": "Nie ustawiono języka",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "Brak wątków pasujących do zdefiniowanego filtra.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Brak",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Uwaga: używane boty zostaną wyłączone.",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "Brak treści do podglądu",
@@ -932,6 +940,7 @@
   "Other permissions": "Pozostałe uprawnienia",
   "Other settings": "Pozostałe ustawienia",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Wymagaj podania tematów w wiadomościach na kanałach",
   "Research": "",
   "Resend": "Wyślij ponownie",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Odzyskaj wersję",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Wyszukaj osoby",
   "Search results": "Wyniki wyszukiwania",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Zobacz jak należy skonfigurować email.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Pokaż/zmień klucz API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Zarejestruj",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Opis kanału nie może zawierać znaków nowego wiersza.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Hasło dostępu użytkownika zostanie usunięte z systemu, a wszystkie jego boty wyłączone.",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Czwartek",
   "Time": "Czas",
   "Time format": "Format czasu",
@@ -1240,6 +1259,7 @@
   "Today": "Dzisiaj",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Przełącz subskrypcje",
   "Toggle the gear menu": "Włącz/wyłącz menu ustawień",
   "Toggle topic mute": "Włącz/wyłącz wyciszenie wątku",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip wyśle email aby potwierdzić adresy email użytkowników i wyśle powiadomienia.",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "więcej wątków",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} few {} many {} other {}}",
diff --git a/locale/pt/LC_MESSAGES/django.po b/locale/pt/LC_MESSAGES/django.po
index 924549ebdd..49ed7e3ee9 100644
--- a/locale/pt/LC_MESSAGES/django.po
+++ b/locale/pt/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Andrei Bernardo Simoni , 2021\n"
 "Language-Team: Portuguese (http://app.transifex.com/zulip/zulip/language/pt/)\n"
@@ -25,57 +25,51 @@ msgstr ""
 "Language: pt\n"
 "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Não permitido para usuários convidados"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organização inválida"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Fluxos públicos"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Fluxos privados"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Data de início é depois da data de fim. Início: {start}, Fim: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Nenhuma dado analítico disponível. Por favor contate o administrador do servidor"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Parâmetros inválidos"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -84,7 +78,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -93,7 +87,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -102,7 +96,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -111,7 +105,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -120,11 +114,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -140,124 +134,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Método de pagamento desconhecido. Por favor contacte {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Erro inesperado. Por favor contacte {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Algo deu errado. Por favor, recarregue a página."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Algo deu errado. Por favor, aguarde alguns segundos e tente novamente."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Deve ser um administrador de faturamento ou proprietário da organização"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -265,54 +259,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Parâmetros inválidos"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Erro"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -321,8 +322,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Erro interno do servidor"
 
@@ -427,7 +461,7 @@ msgstr "15 dias ativos"
 msgid "Total users"
 msgstr "Total de usuários"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Usuários"
 
@@ -567,36 +601,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Certifique-se de copiar o link corretamente para o seu navegador. Se você ainda está encontrando esta página, provavelmente a culpa é nossa. Nós lamentamos."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Faturamento"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirmar"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -618,6 +748,451 @@ msgstr "Categorias"
 msgid "All"
 msgstr "Todos"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -637,11 +1212,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -656,12 +1227,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Criar organização"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -694,51 +1265,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contatar o suporte"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organização"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Enviar"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -754,14 +1322,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -809,7 +1369,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Inscreva-se"
 
@@ -842,8 +1402,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Entrar"
 
@@ -876,26 +1436,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Atualizações podem atrasar."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Tente agora."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Mensagens"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1118,21 +1674,21 @@ msgstr "Usuários convidados"
 msgid "Normal users"
 msgstr "Usuários padrão"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Fechar"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Atualizar"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2355,7 +2911,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2375,7 +2931,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2385,12 +2950,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Endereço de e-mail"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Encontrar contas"
 
@@ -2422,7 +2987,7 @@ msgstr "Integrações"
 msgid "Desktop & mobile apps"
 msgstr "Aplicativos móveis e para desktop"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nova organização"
 
@@ -2790,12 +3355,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2804,11 +3365,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2977,6 +3533,22 @@ msgstr "Em quê você está interessado?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Redefinir sua senha"
@@ -3134,123 +3706,107 @@ msgid ""
 "                        "
 msgstr "\n                        Você pode usar também o Zulip desktop app.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} aceitou seu convite para participar do Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Mapeamento de pedidos inválido."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Campo id {id} não encontrado."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Sua conta é muito nova para enviar convites para esta organização. Pergunte a um administrador da organização ou a um usuário mais experiente."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Alguns e-mails não foram validados, por isso não enviamos nenhum convite."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Não fomos capazes de convidar ninguém."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3280,72 +3836,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Sua organização desligou a edição de mensagem"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Você não tem permissão para editar esta mensagem"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "O limite de tempo para editar esta mensagem passou"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Sua organização desligou a edição de mensagem"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Você não tem permissão para editar esta mensagem"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "O limite de tempo para editar esta mensagem passou"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3364,137 +3920,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Mensagem inválida"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Não é possível processar a mensagem"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: o programador da API enviou conteúdo JSON inválido"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Um emoji personalizado com este nome já existe."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3503,38 +4064,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Nenhuma descrição."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3548,7 +4109,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3558,187 +4119,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Esta API não está disponível para bots de webhooks de entrada."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Conta não está associada a este subdomínio"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Este ponto de acesso não aceita requisições de bot."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Deve ser um administrador do servidor"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permissão insuficiente"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Este endpoint requer autenticação HTTP básica"
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Cabeçalho de autorização inválido para autenticação básica"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Cabeçalho de autorização ausente para autenticação básica"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Bots webhooks podem apenas acessar webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomínio precisa ter comprimento 3 ou maior."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomínio não pode iniciar ou terminar com um '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomínio pode apenas ter letras minúsculas, números e '-'s."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Por favor, utilize seu endereço de e-mail real."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "A organização que você está tentando ingressar utilizando {email} não existe."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Por favor, solicite um convite para {email} do administrador da organização."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Seu endereço de e-mail {email} não está em um dos domínios com permissão para se inscrever em contas dessa organização."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Endereços de e-mail contendo + não são permitidos nesta organização."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nova senha"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Nova confirmação de senha"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Por favor, insira no máximo 10 e-mails."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Não conseguimos encontrar essa organização Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Tópico ausente"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Não pode enviar para múltiplos fluxos"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Fluxo ausente"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Mensagem deve ter destinatários"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tipo de mensagem inválido"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Anexo inválido"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Ocorreu um erro ao excluir o anexo. Por favor, tente novamente mais tarde."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Mensagem deve ter destinatários!"
 
@@ -3795,88 +4356,88 @@ msgstr "O usuário desabilitou a sincronização de rascunhos."
 msgid "Draft does not exist"
 msgstr "Rascunho não existe"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Endereço inválido."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Fora de seu domínio."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Endereços de e-mail contendo + não são permitidos."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Reservado para bots de sistema."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Já tem uma conta."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "A conta foi desativada."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoji personalizado inválido."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nome de emoji personalizado inválido."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Este emoji personalizado foi desativado."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Código de emoji inválido."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nome do emoji inválido"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Tipo de emoji inválido."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Deve ser um administrador da organização ou autor do emoji"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3884,119 +4445,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "Não foi possível alocar a fila de eventos"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Não entrou: autenticação da API ou sessão de usuário requerida"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Fluxo '{stream}' não existe"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Fluxo com ID '{stream_id}' não existe"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "usuário"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Não é possível desativar a única {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Uso de API excedeu a taxa limite"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON mal formado"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Deve ser um membro da organização"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Deve ser um administrador da organização"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Deve ser o proprietário de uma organização"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Conta está desativada"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Esta organização foi desativada"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Chave API inválida"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Subdomínio inválido"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Acesso negado"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4004,47 +4565,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reação já existe."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reação não existe."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4142,106 +4703,106 @@ msgstr "Produtividade"
 msgid "Version control"
 msgstr "Controle de versão"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Mensagem não deve ser vazia"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Mensagem não deve conter bytes nulos"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Operador de limite inválido: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Se você é um usuário novo do Zulip, que tal dar uma olhada no nosso [Guia de início]({getting_started_url})?"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Olá, bem-vindo ao Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Eu também posso te ajudar a ajeitar suas coisas! Apenas clique nessa mensagem ou aperte `r` para me responder."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4250,119 +4811,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Este é um fluxo privado, conforme indicado pelo ícone de cadeado ao lado do nome do stream."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Os fluxos privados são visíveis apenas para membros do fluxo."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4376,45 +4937,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token não existe"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} mencionou você:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} mencionou a todos:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4426,23 +4987,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Usuário não autorizado para esta consulta"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4462,21 +5023,21 @@ msgstr "Argumento '{var_name}' ausente"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Valor incorreto para '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4513,7 +5074,7 @@ msgstr "Por favor, escolha um: 'stream' ou 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4527,7 +5088,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4536,7 +5097,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4568,28 +5129,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Dados do inscrito não está disponível para este fluxo"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Impossível recuperar inscritos para fluxo privado"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4600,18 +5161,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4621,24 +5182,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} é muito longa (limite: {max_length} caracteres)"
@@ -4648,8 +5209,8 @@ msgstr "{var_name} é muito longa (limite: {max_length} caracteres)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4668,21 +5229,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Envio excederia a cota de envio da organização."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Não foi possível decodificar a imagem; você enviou um arquivo de imagem?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Tamanho da imagem excede limite."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4739,161 +5300,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nome muito longo!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nome muito curto!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Caracteres inválidos no nome!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Formato Inválido!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Nome já está em uso!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Nome ou nome de usuário incorreto"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Dados de configuração inválidos"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Tipo do bot inválido"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tipo de interface inválido"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Bot inexistente"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Usuário não existe"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Usuário está desativado"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} não pode estar em branco."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} tem tamanho incorreto {length}; deve ser {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' não pode estar em branco."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' não é uma opção válida para '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4927,215 +5488,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Caracteres inválidos no nome do emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Administradores e moderadores"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Apenas administradores"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Ninguém"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Dono da organização"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administrador da organização"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Membro"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Convidado"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Público"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Todos os membros do fluxo podem postar"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Apenas administradores da organização podem postar"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Apenas membros plenos da organização podem postar"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoji unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji personalizado"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoji extra do Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Lista de opções"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Selecionador de pessoa"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Texto curto"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Texto longo"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Selecionador de data"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Conta externa"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoji unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji personalizado"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoji extra do Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Caracteres inválidos no nome do emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Público"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Todos os membros do fluxo podem postar"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Apenas administradores da organização podem postar"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Apenas membros plenos da organização podem postar"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Administradores e moderadores"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Apenas administradores"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Ninguém"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Dono da organização"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administrador da organização"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Membro"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Convidado"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Endereço IP desconhecido"
@@ -5148,20 +5705,20 @@ msgstr "um sistema operacional desconhecido"
 msgid "An unknown browser"
 msgstr "Um navegador desconhecido"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Argumento 'queue_id' ausente"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Argumento 'last_event_id' ausente"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5199,41 +5756,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr "Cabeçalho User-Agent ausente da requisição"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "O rótulo não pode ficar em branco."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Campo deve ter pelo menos uma escolha."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Tipo de campo inválido."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend não habilitado."
 
@@ -5284,7 +5841,7 @@ msgstr "Você deve especificar pelo menos um endereço de e-mail."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5333,19 +5890,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Remetente ausente"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Espelhamento não permitido com IDs de usuário do destinatário"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Mensagem espelhada inválida"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Espelhamento do Zephyr não é permitido nesta organização"
 
@@ -5361,42 +5918,46 @@ msgstr "Usuário já está silenciado"
 msgid "User is not muted"
 msgstr "Usuário não está silenciado"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Presença não é suportado para usuários bot."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Cliente não passou nenhum novo valor."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token de comprimento vazio ou inválido"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Token APNS inválido"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5411,55 +5972,55 @@ msgstr "Pelo menos um dos seguintes argumentos deve estar presente: emoji_name,
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Pelo menos um método de autenticação deve estar habilitado."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Você deve enviar exatamente um arquivo."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5493,7 +6054,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Você deve enviar exatamente um ícone."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5521,71 +6082,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Você deve passar \"new_description\" ou \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Valor inválido para \"op\". Especifique \"adicionar\" ou \"remover\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Fluxo já possui este nome!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nada para fazer. Especifique pelo menos \"adicionar\" ou \"excluir\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Você pode apenas convitar outros usuários do espelhamento Zephyr para fluxos privados."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5594,7 +6155,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Json inválido para sub-mensagem"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Você não está autorizado a visualizar este arquivo.
"
 
@@ -5618,112 +6179,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Você deve escolher um arquivo para enviar"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Você pode enviar somente um arquivo por vez"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nenhum novo dado fornecido"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Mudanças na imagem de perfil estão desativadas nesta organização"
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Alteração de endereço de email está desabilitada neste organização."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Sua senha do Zulip é gerenciada no LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Senha incorreta!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Você deve enviar apenas um avatar"
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Tópico não está silenciado"
 
@@ -5784,43 +6345,43 @@ msgstr "Endereços de e-mail descartáveis não são permitidos nesta organizaç
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Zoom: Token de acesso inválido"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom: As credenciais de acesso não foram configuradas"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Zoom: Identificador de sessão de inválido."
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Zoom: Credenciais inválidas"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Zoom: Falha ao criar uma chamada"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5853,11 +6414,11 @@ msgstr "Carga útil inválida"
 msgid "Unknown webhook request"
 msgstr "Requisição webhook desconhecida"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Tópico não pode ser vazio"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Conteúdo não pode ser vazio"
 
@@ -5884,7 +6445,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Impossível lidar com carga do Pivotal"
 
@@ -5901,83 +6462,105 @@ msgstr "Mensagem do Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Subdomínio inválido para retorno de notificações via push"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Deve validar com chave API válida do servidor Zulip"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Tipo de token inválido"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Dados estão fora de ordem."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP inválido"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/pt/translations.json b/locale/pt/translations.json
index e841f323a0..aa44eecd42 100644
--- a/locale/pt/translations.json
+++ b/locale/pt/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(arquivo anexo)",
   "(forever)": "(pra sempre)",
   "(hidden)": "(escondido)",
-  "(no description)": "(sem descrição)",
   "(no topic)": "(sem tópico)",
   "(or )": "",
   "(you)": "(você)",
   "({message_retention_days} days)": "({message_retention_days} dias)",
   "/dark (Switch to the dark theme)": "/escuro (Mudar para tema escuro)",
   "/light (Switch to light theme)": "/light (Mudar para tema claro)",
-  "/me is excited (Display action text)": "/me está animado (Mostrar texto de ação)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Onde vamos almoçar hoje? (Criar uma enquete)",
-  "/todo (Create a todo list)": "/fazer (Criar lista de coisas pra fazer)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dia",
   "1 hour": "1 hora",
   "1 week": "1 semana",
@@ -28,7 +27,7 @@
   "6 hours": "6 horas",
   "Total messages: {total_messages}": "Mensagens totais: {total_messages} ",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} será removido das mensagens onde foi compartilhado. Essa ação não pode ser desfeita.
",
-  "Stream will be announced in #{notifications_stream}.
": "Canal será anunciado em #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Você está buscando por mensagens que foram enviadas por mais de uma pessoa, o que não é possível.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Você está procurando por mensagens que pertencem a mais de um canal, o que não é possível.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Você está buscando por mensagens que pertencem a mais de um tópico, o que não é possível.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Atividade desconhecida",
   "Add": "Adicionar",
   "Add GIF": "Adicionar GIF",
+  "Add a description": "",
   "Add a new alert word": "Adicionar um novo alerta de palavra",
   "Add a new bot": "Adicionar um novo bot",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "E-mail do bot",
   "Bot email (a-z, 0-9, and dashes only)": "Email do bot (a-z, 0-9, e hifens apenas)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Tipo do bot",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "Código",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configure os métodos de autenticação para sua organização.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configure os canais padrão aos quais novos usuários são inscritos ao ingressar em sua organização.",
   "Confirm": "Confirmar",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "Copiar código",
   "Copy link": "Copiar link",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Excluir rascunho",
@@ -413,7 +417,6 @@
   "Domain": "Domínio",
   "Don’t allow disposable email addresses": "Não permitir endereços de email indisponíveis",
   "Download": "Download",
-  "Download .zuliprc": "Baixar .zuliprc",
   "Download botserverrc": "Baixar botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Baixar configuração de todos os bots de webhook de saída ativos no formato Zulip Botserver.",
   "Download file": "Baixar arquivo",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efeito",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-mail",
   "Email address": "Endereço de e-mail",
   "Email address changes are disabled in this organization.": "Alteração de endereço de email está desabilitada neste organização.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Imagem",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Bots inativos",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "Março",
   "Mark all messages as read": "Marcar todas as mensagens como lidas",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Marcar como lido",
   "Mark as resolved": "Marcar como resolvido",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mencionado em",
   "Mentions": "Menções",
   "Menus": "Menus",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Ações de mensagem",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "Mensagens",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "Novo",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Novo e-mail",
   "New message": "Nova mensagem",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Próximo tópico não lido",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Nenhum bot corresponde ao seu filtro atual.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Nenhuma descrição.",
   "No drafts selected": "",
   "No drafts.": "Nenhum rascunho.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Nenhum convite corresponde ao seu filtro atual.",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Nenhum",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Note que qualquer bot que você mantém será desabilitado.",
   "Note that organizations are limited to five exports per week.": "Note que organizações estão limitadas até cinco exportações por semana.",
   "Nothing to preview": "Nada para visualizar",
@@ -932,6 +940,7 @@
   "Other permissions": "Outras permissões",
   "Other settings": "Outras configurações",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "Formato da mensagem do webhook de saída",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Requerer tópicos em mensagens de fluxo",
   "Research": "",
   "Resend": "Reenviar",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Reenvio encontrou um erro. Por favor, recarregue e tente novamente.",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Restaurar rascunho",
   "Restrict email domains of new users?": "Restringir domínios de e-mail de novos usuários?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Pesquisar pessoas",
   "Search results": "Resultados da pesquisa",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Ver como configurar o e-mail.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Mostrar contagem de mensagens favoritadas",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Mostrar/alterar sua chave API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Inscreva-se",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "O canal#{stream_name} não existe. Gerencie suas inscrições em sua página de Canais.",
   "The stream description cannot contain newline characters.": "A descrição do canal não pode conter caracteres que criam novas linhas.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Sua senha será apagada de nossos sistemas, e qualquer bot que eles mantenham será desativado.",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Quinta",
   "Time": "",
   "Time format": "Formato de horas",
@@ -1240,6 +1259,7 @@
   "Today": "Hoje",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Alternar inscrição",
   "Toggle the gear menu": "Alternar o menu de engrenagem",
   "Toggle topic mute": "Alternar tópico para silenciado",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "O Zulip precisa enviar e-mail para confirmar os endereços dos usuários e enviar notificações.",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "mais tópicos",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} many {} other {}}",
diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po
index dae0863565..c72928d0b8 100644
--- a/locale/pt_BR/LC_MESSAGES/django.po
+++ b/locale/pt_BR/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Luiz François , 2021\n"
 "Language-Team: Portuguese (Brazil) (http://app.transifex.com/zulip/zulip/"
@@ -21,59 +21,53 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
 "1000000 == 0 ? 1 : 2;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Não permitido para visitantes"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organização inválida"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Streams públicas"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Streams particulares"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 "O tempo de início é posterior ao tempo final. Início: {start}, Fim: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 "Sem dados de analytics disponíveis. Por favor contate seu administrador do "
 "servidor."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Parâmetros inválidos"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -86,7 +80,7 @@ msgstr ""
 "({billing_page_link}) ou [desative usuários inativos]"
 "({deactivate_user_help_page_link}) para permitir novos usuários"
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -97,7 +91,7 @@ msgstr ""
 "[aumente o número de licenças]({billing_page_link}) ou [desative usuários "
 "inativos]({deactivate_user_help_page_link}) para permitir novos usuários"
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -108,7 +102,7 @@ msgstr ""
 "[aumente o número de licenças]({billing_page_link}) ou [desative usuários "
 "inativos]({deactivate_user_help_page_link}) para permitir novos usuários"
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -119,7 +113,7 @@ msgstr ""
 "[aumente o número de licenças]({billing_page_link}) ou [desative usuários "
 "inativos]({deactivate_user_help_page_link}) para permitir novos usuários"
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -132,11 +126,11 @@ msgstr ""
 "[aumente o número de licenças]({billing_page_link}) ou [desative usuários "
 "inativos]({deactivate_user_help_page_link}) para permitir novos usuários."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Todas as licenças Zulip para esta organização estão atualmente em uso."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -156,14 +150,14 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr "Código de emoji inválido."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, fuzzy, python-brace-format
 #| msgid ""
 #| "Invoices with more than {} licenses can't be processed from this page. To "
@@ -175,45 +169,45 @@ msgstr ""
 "Faturas com mais de {} licenças não podem ser processadas por esta página. "
 "Para completar o upgrade, por favor. contate {}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 #, fuzzy
 #| msgid "No payment method on file"
 msgid "No payment method on file."
 msgstr "Nenhum método de pagamento cadastrado"
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} terminando em {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Método de pagamento desconhecido. Por favor, contate {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Algo errado aconteceu. Por favor contate {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Algo errado aconteceu. Por favor, recarregue a página."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 "Algo errado aconteceu. Por favor aguarde alguns segundos e tente de novo."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
@@ -221,11 +215,11 @@ msgstr ""
 "Não foi possível atualizar o plano. O plano foi expirado e substituído por "
 "um novo plano."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Não foi possível atualizar o plano. O plano terminou."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 #, fuzzy
 #| msgid ""
 #| "Your plan is already on {licenses} licenses in the current billing period."
@@ -233,7 +227,7 @@ msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "Seu planos já está com {licenses} licenças no periodo atual de fatura."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
@@ -241,54 +235,54 @@ msgstr ""
 "Não foi possível atualizar as licenças manualmente. O seu plano está em "
 "gestão automática de licenças."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Seu planos já está com {licenses} licenças no periodo atual de fatura."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Nada a alterar."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Sem clientes para esta organização!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Sessão não encontrada"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -298,62 +292,69 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 #, fuzzy
 #| msgid "Invalid interface type"
 msgid "Invalid billing access token."
 msgstr "Tipo de interface inválido"
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 #, fuzzy
 #| msgid "Reaction doesn't exist."
 msgid "User account doesn't exist yet."
 msgstr "Esta reação não existe."
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 #, fuzzy
 #| msgid "Accept the Terms of Service"
 msgid "You must accept the Terms of Service to proceed."
 msgstr "Aceitar os Termos de Serviço"
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 #, fuzzy
 #| msgid "This custom emoji has been deactivated."
 msgid "Your server registration has been deactivated."
 msgstr "Este emoji customizado foi desativado."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Parâmetros inválidos"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -363,8 +364,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Erro interno do servidor"
 
@@ -475,7 +513,7 @@ msgstr "15 dias ativos"
 msgid "Total users"
 msgstr "Total de usuários"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Usuários"
 
@@ -627,36 +665,142 @@ msgstr ""
 "você ainda está encontrando esta página, provavelmente a culpa é nossa. \n"
 "Nós lamentamos."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Faturamento"
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirmar"
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+#, fuzzy
+#| msgid "Cancel"
+msgid "Cancel upgrade"
+msgstr "Cancelar"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+#, fuzzy
+#| msgid "Deactivated organization"
+msgid "Deactivate server registration?"
+msgstr "Organização desativada"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -678,6 +822,455 @@ msgstr ""
 msgid "All"
 msgstr "Tudo"
 
+#: templates/corporate/comparison_table_integrated.html:103
+#, fuzzy
+#| msgid "Messages"
+msgid "10,000 messages"
+msgstr "Mensagens"
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+#, fuzzy
+#| msgid "Support Zulip"
+msgid "Supported"
+msgstr "Suporte o Zulip"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "A comunidade de desenvolvimento do Zulip"
@@ -697,11 +1290,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -716,12 +1305,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Criar organização"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -754,105 +1343,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-#, fuzzy
-#| msgid "Deactivated organization"
-msgid "Deactivate server registration?"
-msgstr "Organização desativada"
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contatar suporte"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "De"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organização"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Assunto"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Mensagem"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Enviar"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -868,14 +1400,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -924,7 +1448,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Inscrever-se"
@@ -959,8 +1483,8 @@ msgstr "Já tem uma conta."
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Login"
 
@@ -1000,26 +1524,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Não foi possível conectar-se ao Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Tentando novamente em breve..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Tentar agora."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Mensagens"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1253,21 +1773,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "Usuários normais"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Fechar"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2532,7 +3052,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2545,12 +3075,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Pesquisar contas"
 
@@ -2582,7 +3112,7 @@ msgstr "Integrações"
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2949,12 +3479,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2963,11 +3489,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -3144,6 +3665,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3307,125 +3846,108 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
-#, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr ""
+#: zerver/actions/create_user.py:110
+#, fuzzy, python-brace-format
+#| msgid "No customer for this organization!"
+msgid "{user} joined this organization."
+msgstr "Sem clientes para esta organização!"
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Alguns emails não foram validados, por isso não enviamos convites."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Não conseguimos convidar quem quer que seja."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3455,72 +3977,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Você não tem permissão para editar esta mensagem"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Você não tem permissão para editar esta mensagem"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3540,138 +4062,143 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Incapaz de processar a mensagem"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 #, fuzzy
 #| msgid "You don't have permission to edit this message"
 msgid "You do not have permission to access some of the recipients."
 msgstr "Você não tem permissão para editar esta mensagem"
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3681,38 +4208,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3727,7 +4254,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3737,192 +4264,192 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "A conta não está associada a este subdomínio"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permissão insuficiente"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Cabeçalho de autorização inválido para autenticação básica"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Os bots de webhook só podem acessar webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "O subdomínio deve ter comprimento 3 ou maior."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "O subdomínio não pode começar ou terminar com '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "O subdomínio só pode ter letras minúsculas, números e '-'s."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 #, fuzzy
 #| msgid "Subdomain unavailable. Please choose a different one."
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Subdomínio indisponível. Escolha um diferente."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 #, fuzzy
 #| msgid "Subdomain unavailable. Please choose a different one."
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Subdomínio indisponível. Escolha um diferente."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Por favor, use seu endereço de e-mail real."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, fuzzy, python-brace-format
 #| msgid "Invalid domain: {}"
 msgid "Invalid email '{email}'"
 msgstr "Domínio inválido: {}"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Falta o tópico"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "A mensagem não deve estar vazia"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "A mensagem deve ter destinatários"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tipo de mensagem inválido"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Anexo inválido"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3979,89 +4506,89 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Endereço inválido."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Fora do seu domínio."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Já tem uma conta."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, fuzzy, python-brace-format
 #| msgid "Token does not exist"
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "A token não existe"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nome de emoji customizado inválido."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Este emoji customizado foi desativado."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Código de emoji inválido."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nome do emoji é inválido."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Tipo de emoji inválido."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -4069,174 +4596,174 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr "Não foi possível alocar fila de eventos"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Não conectado: autenticação de API ou sessão de usuário é necessário"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON corrompido"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Chave de API inválida"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 #, fuzzy
 #| msgid "User not authorized for this query"
 msgid "User not authenticated"
 msgstr "Usuário não autorizado para esta consulta"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Subdomínio inválido"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Acesso negado"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Esta reação não existe."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 #, fuzzy
 #| msgid "Organization does not exist"
 msgid "Organization not registered"
 msgstr "A organização não existe"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 #, fuzzy
 #| msgid "You don't have permission to edit this message"
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "Você não tem permissão para editar esta mensagem"
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 #, fuzzy
 #| msgid "You don't have permission to edit this message"
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "Você não tem permissão para editar esta mensagem"
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4334,106 +4861,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "A mensagem não pode ser vazia"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4441,119 +4968,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4567,45 +5094,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "A token não existe"
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4617,23 +5144,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Usuário não autorizado para esta consulta"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4653,21 +5180,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4706,7 +5233,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4720,7 +5247,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4730,7 +5257,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "Stream(s) ({}) não existente"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4764,28 +5291,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr "Caracteres inválidos no nome do emoji"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4796,18 +5323,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4817,24 +5344,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4844,8 +5371,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4865,21 +5392,21 @@ msgstr "Parâmetros inválidos"
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4938,161 +5465,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nome muito longo!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Caracteres inválidos no nome!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Nome ou nome de usuário inválidos"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tipo de interface inválido"
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Não existe tal bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Não existe tal usuário"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5126,217 +5653,213 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
+#: zerver/models/custom_profile_fields.py:50
+#, python-brace-format
+msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
+#: zerver/models/custom_profile_fields.py:54
+#, python-brace-format
+msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
+#: zerver/models/custom_profile_fields.py:94
+msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
+#: zerver/models/custom_profile_fields.py:112
+msgid "Link"
 msgstr ""
 
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+#: zerver/models/custom_profile_fields.py:115
+msgid "External account"
 msgstr ""
 
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
+#: zerver/models/custom_profile_fields.py:120
+msgid "Pronouns"
 msgstr ""
 
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Caracteres inválidos no nome do emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
 #, python-brace-format
 msgid "Bad regular expression: {regex}"
 msgstr ""
 
-#: zerver/models.py:1348
+#: zerver/models/linkifiers.py:37
 msgid "Unknown regular expression error"
 msgstr ""
 
-#: zerver/models.py:1356
+#: zerver/models/linkifiers.py:45
 msgid "Invalid URL template."
 msgstr ""
 
-#: zerver/models.py:1405
+#: zerver/models/linkifiers.py:94
 #, python-format
 msgid "Group %(name)r in URL template is not present in linkifier pattern."
 msgstr ""
 
-#: zerver/models.py:1417
+#: zerver/models/linkifiers.py:106
 #, python-format
 msgid "Group %(name)r in linkifier pattern is not present in URL template."
 msgstr ""
 
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji customizado"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoji extra do Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Caracteres inválidos no nome do emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
 msgid "Invalid characters in pygments language"
 msgstr ""
 
-#: zerver/models.py:1503
+#: zerver/models/realm_playgrounds.py:70
 msgid "Missing the required variable \"code\" in the URL template"
 msgstr ""
 
-#: zerver/models.py:1508
+#: zerver/models/realm_playgrounds.py:75
 msgid "\"code\" should be the only variable present in the URL template"
 msgstr ""
 
-#: zerver/models.py:1795
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Todos os membros da stream podem postar"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
 msgid "Admins, moderators, members and guests"
 msgstr ""
 
-#: zerver/models.py:1796
+#: zerver/models/users.py:254
 msgid "Admins, moderators and members"
 msgstr ""
 
-#: zerver/models.py:1797
+#: zerver/models/users.py:255
 msgid "Admins and moderators"
 msgstr "Admins e moderadores"
 
-#: zerver/models.py:1798
+#: zerver/models/users.py:256
 msgid "Admins only"
 msgstr "Apenas admins"
 
-#: zerver/models.py:1799
+#: zerver/models/users.py:257
 msgid "Nobody"
 msgstr ""
 
-#: zerver/models.py:1961
+#: zerver/models/users.py:419
 #, fuzzy
 #| msgid "Anonymous user"
 msgid "Unknown user"
 msgstr "Usuário anônimo"
 
-#: zerver/models.py:2117
+#: zerver/models/users.py:575
 msgid "Organization owner"
 msgstr ""
 
-#: zerver/models.py:2118
+#: zerver/models/users.py:576
 msgid "Organization administrator"
 msgstr ""
 
-#: zerver/models.py:2119
+#: zerver/models/users.py:577
 msgid "Moderator"
 msgstr ""
 
-#: zerver/models.py:2120
+#: zerver/models/users.py:578
 msgid "Member"
 msgstr ""
 
-#: zerver/models.py:2121
+#: zerver/models/users.py:579
 msgid "Guest"
 msgstr ""
 
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Todos os membros da stream podem postar"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji customizado"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoji extra do Zulip"
-
-#: zerver/models.py:4983
-#, python-brace-format
-msgid "User with ID {user_id} is deactivated"
-msgstr ""
-
-#: zerver/models.py:4987
-#, python-brace-format
-msgid "User with ID {user_id} is a bot"
-msgstr ""
-
-#: zerver/models.py:5027
-msgid "List of options"
-msgstr ""
-
-#: zerver/models.py:5030
-msgid "Person picker"
-msgstr ""
-
-#: zerver/models.py:5042
-msgid "Short text"
-msgstr ""
-
-#: zerver/models.py:5043
-msgid "Long text"
-msgstr ""
-
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
-msgid "Link"
-msgstr ""
-
-#: zerver/models.py:5048
-msgid "External account"
-msgstr ""
-
-#: zerver/models.py:5053
-msgid "Pronouns"
-msgstr ""
-
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5349,20 +5872,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Faltando o argumento 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Faltando o argumento 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5400,41 +5923,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5485,7 +6008,7 @@ msgstr "Você deve especificar pelo menos um endereço de e-mail."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5534,19 +6057,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Falta o remetente"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Mensagem espelhada inválida"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5562,45 +6085,49 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, fuzzy, python-brace-format
 #| msgid "Invalid attachment"
 msgid "Invalid status: {status}"
 msgstr "Anexo inválido"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 #, fuzzy
 #| msgid "Invalid data."
 msgid "Invalid app ID"
 msgstr "Dado inválido."
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token de comprimento vazio ou inválido"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5615,56 +6142,56 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Pelo menos um método de autenticação deve ser ativado."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, fuzzy, python-brace-format
 #| msgid "Invalid domain: {}"
 msgid "Invalid domain: {error}"
 msgstr "Domínio inválido: {}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Você deve carregar exatamente um arquivo."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5698,7 +6225,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Você deve carregar exatamente um ícone."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5726,71 +6253,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "A Stream já possui este nome!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nada a fazer. Especifique pelo menos se 'adicionar' ou 'excluir'."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5799,7 +6326,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5827,112 +6354,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Você deve especificar um arquivo para fazer o upload"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Você só pode fazer upload de um arquivo por vez"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nenhum novo dado fornecido"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Mudanças no endereço de e-mail desativadas nesta organização."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Senha incorreta!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Você deve fazer o upload de precisamente um avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5996,43 +6523,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr "Nome de usuário já em uso"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Assinatura inválida."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -6065,11 +6592,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "O tópico não pode estar vazio"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "O conteúdo não pode estar vazio"
 
@@ -6096,7 +6623,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -6113,89 +6640,111 @@ msgstr "Mensagem do Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Tipo de token inválido"
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 #, fuzzy
 #| msgid "Missing sender"
 msgid "Missing ios_app_id"
 msgstr "Falta o remetente"
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, fuzzy, python-brace-format
 #| msgid "Invalid parameters"
 msgid "Invalid property {property}"
 msgstr "Parâmetros inválidos"
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 #, fuzzy
 #| msgid "Invalid token type"
 msgid "Invalid event type."
 msgstr "Tipo de token inválido"
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP inválido"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
 
diff --git a/locale/pt_BR/translations.json b/locale/pt_BR/translations.json
index 3d70836bef..348c991c48 100644
--- a/locale/pt_BR/translations.json
+++ b/locale/pt_BR/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(para sempre)",
   "(hidden)": "",
-  "(no description)": "(sem descrição)",
   "(no topic)": "(sem tópico)",
   "(or )": "",
   "(you)": "(você)",
   "({message_retention_days} days)": "({message_retention_days} dias)",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "/me estou animado (Exibe texto de ação)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Onde vamos almoçar hoje? (Cria uma enquete)",
-  "/todo (Create a todo list)": "/todo (Cria uma lista de tarefas a fazer)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dia",
   "1 hour": "1 hora",
   "1 week": "1 semana",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "Total de mensagens: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "A stream será anunciada em #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Adicionar",
   "Add GIF": "Adicionar GIF",
+  "Add a description": "",
   "Add a new alert word": "Adicionar uma nova palavra de alerta",
   "Add a new bot": "Adicionar um novo bot",
   "Add a new code playground": "Adicionar um novo code playground",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "Confirmar",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efeito",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "",
   "Email address changes are disabled in this organization.": "Mudanças no endereço de e-mail desativadas nesta organização.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mencionado em",
   "Mentions": "menções",
   "Menus": "Menus",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Próximo tópico não lido",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Buscar pessoas",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Veja como configurar o e-mail.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "Inscrever-se",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "Alternar o menu de engrenagem",
   "Toggle topic mute": "Alternar silenciar tópico",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "",
+  "{N, plural, one {# participant} other {# participants}}": "",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "",
diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po
index 880530685f..d3d5a0e4ea 100644
--- a/locale/pt_PT/LC_MESSAGES/django.po
+++ b/locale/pt_PT/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: João Alves , 2021-2022\n"
 "Language-Team: Portuguese (Portugal) (http://app.transifex.com/zulip/zulip/language/pt_PT/)\n"
@@ -19,57 +19,51 @@ msgstr ""
 "Language: pt_PT\n"
 "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Não permitido a visitantes"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organização inválida"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Canais públicos"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Canais privados"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Mensagens directas"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "A hora de início é posterior à hora de fim. Início: {start}, Fim: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Sem dados analíticos disponíveis. Por favor contacte o administrador do servidor."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Parâmetros inválidos"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -78,7 +72,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -87,7 +81,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -114,11 +108,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Todas as licenças Zulip para esta organização estão atualmente em uso."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -134,124 +128,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Método de pagamento desconhecido. Por favor contacte {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Algo correu mal. Por favor contacte {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Algo correu mal. Por favor recarregue a página."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Algo correu mal. Por favor aguarde alguns segundos e volte a tentar."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Não foi possível actualizar o plano. O plano foi expirado e substituído com um novo plano."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Não foi possível actualizar o plano. O plano terminou."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Não foi possível actualizar as licenças manualmente. O seu plano está em gestão automática de licenças."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "O seu plano já está em {licenses} licenças no período de facturação actual."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Não pode diminuir as licenças no período de facturação actual."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "O seu plano já está agendado para renovação com {licenses_at_next_renewal} licenças."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Nada a alterar."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Sem clientes para esta organização!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Sessão não encontrada"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Tem de ser administrador da facturação ou proprietário da organização"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -259,54 +253,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Parâmetros inválidos"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Erro"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -315,8 +316,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Erro interno do servidor"
 
@@ -421,7 +455,7 @@ msgstr "Ativos em 15 dias"
 msgid "Total users"
 msgstr "Total de utilizadores"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Utilizadores"
 
@@ -561,36 +595,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Certifique-se de que copiou o link correctamente para o seu navegador. Se ainda assim encontrar esta página, provavelmente é culpa nossa. Pedimos desculpa."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Faturação"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Fechar modal"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirmar"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -612,6 +742,451 @@ msgstr "Categorias"
 msgid "All"
 msgstr "Todo"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "A comunidade de desenvolvimento do Zulip"
@@ -631,11 +1206,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr "Aderir como contribuidor"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -650,12 +1221,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Criar organização"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -688,51 +1259,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contactar Apoio"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "De"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organização"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Assunto"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Mensagem"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Submeter"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -748,14 +1316,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -803,7 +1363,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Inscrever-se"
 
@@ -836,8 +1396,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Iniciar Sessão"
 
@@ -870,26 +1430,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "As actualizações podem ser atrasadas."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Tentar agora."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Mensagens"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1112,21 +1668,21 @@ msgstr "Utilizadores visitantes"
 msgid "Normal users"
 msgstr "Utilizadores normais"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Fechar"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Atualizar"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2349,7 +2905,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2369,7 +2925,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2379,12 +2944,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Endereço de e-mail"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Encontrar contas"
 
@@ -2416,7 +2981,7 @@ msgstr "Integrações"
 msgid "Desktop & mobile apps"
 msgstr "Apps de desktop e móvel"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Nova organização"
 
@@ -2784,12 +3349,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2798,11 +3359,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2971,6 +3527,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3128,123 +3700,107 @@ msgid ""
 "                        "
 msgstr "\n                        Também pode usar a app desktop do Zulip.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3274,72 +3830,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr "Os widgets não podem ser editados."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Não tem permissão para editar esta mensagem"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Não tem permissão para editar esta mensagem"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Não tem permissão para mover esta mensagem"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3358,137 +3914,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Os tópicos são obrigatórios nesta organização"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3497,38 +4058,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Sem descrição."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3542,7 +4103,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3552,187 +4113,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "A conta não está associada a este subdomínio"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Tem de ser administrador do servidor"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permissão insuficiente"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "O subdomínio não pode começar nem terminar com '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "O subdomínio só pode conter letras minúsculas, números, e '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Por favor, utilize o seu endereço de e-mail real."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nova palavra-passe"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "A mensagem tem de ter destinatários"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tipo de mensagem inválido"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Anexo inválido"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "A mensagem tem de ter destinatários!"
 
@@ -3789,88 +4350,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Endereço inválido."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Endereços de e-mail contendo + não são permitidos."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Reservado para bots de sistema."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "O {email} já tem uma conta"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Já tem uma conta."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoji personalizado inválido."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nome de emoji personalizado inválido."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Este emoji personalizado foi desativado."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Código de emoji inválido."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nome de emoji inválido"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Tipo emoji inválido."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Tem de ser administrador da organização ou autor do emoji"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Nome de emoji em falta"
 
@@ -3878,119 +4439,119 @@ msgstr "Nome de emoji em falta"
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "O canal '{stream}' não existe"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "O canal com ID '{stream_id}' não existe"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "Proprietário da organização"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "utilizador"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Tem de ser membro da organização"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Tem de ser administrador da organização"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Tem de ser proprietário da organização"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Conta desativada"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Esta organização foi desativada"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Chave API inválida"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Subdomínio inválido"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Acesso negado"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3998,47 +4559,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Tipo de conta externa inválido"
 
@@ -4136,106 +4697,106 @@ msgstr "Produtividade"
 msgid "Version control"
 msgstr "Controlo de versões"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "A mensagem não pode estar em branco"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "A mensagem não pode conter bytes nulos"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Olá e bem-vindo ao Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4244,119 +4805,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Este canal é privado, como indicado pelo ícone de aloquete ao lado do nome do canal."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Os canais privados são apenas visíveis a membros do canal."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Os temas são uma forma simples de manter conversas organizadas."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Pode aprender mais sobre temas em [Canais e temas]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4370,45 +4931,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} mencionou-o:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} mencionou todos:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4420,23 +4981,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4456,21 +5017,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4507,7 +5068,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "ID de canal inválido"
 
@@ -4521,7 +5082,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4530,7 +5091,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Não estão permitidos canais web-públicos."
 
@@ -4562,28 +5123,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} não é booleano"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} não é uma data"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4594,18 +5155,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} não é um número inteiro"
@@ -4615,24 +5176,24 @@ msgstr "{var_name} não é um número inteiro"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} não é uma lista"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} inválido"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} é demasiado longo (limite: {max_length} caracteres)"
@@ -4642,8 +5203,8 @@ msgstr "{var_name} é demasiado longo (limite: {max_length} caracteres)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4662,21 +5223,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "O tamanho da imagem excede o limite."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4733,161 +5294,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nome demasiado longo!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nome demasiado curto!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Caracteres inválidos no nome!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Formato inválido!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "O nome já está a ser usado!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Tipo de bot inválido"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tipo de interface inválido"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "O utilizador está desativado"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} não é um código hex de cor válido"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} deve ter exactamente {length} itens"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} está errado)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} não é um URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' não é uma opção válida para '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4921,215 +5482,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "eventos do canal"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Caracteres inválidos no nome do emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Admins, moderadores, membros e visitantes"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Admins, moderadores e membros"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Admins e moderadores"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Apenas admins"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Ninguém"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Proprietário da organização"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administrador da organização"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderador"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Membro"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Visitante"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-público"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Público"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Privado, histórico partilhado"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Privado, histórico protegido"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Todos os membros do canal podem publicar"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Apenas administradores da organização podem publicar"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Apenas administradores da organização e moderadores podem publicar"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Apenas membros integrais da organização podem publicar"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji personalizados"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Lista de opções"
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Texto curto"
-
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Texto longo"
-
-#: zerver/models.py:5043
-msgid "Date picker"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
+
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Conta externa"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronomes"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji personalizados"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Caracteres inválidos no nome do emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "eventos do canal"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-público"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Público"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Privado, histórico partilhado"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Privado, histórico protegido"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Todos os membros do canal podem publicar"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Apenas administradores da organização podem publicar"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Apenas administradores da organização e moderadores podem publicar"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Apenas membros integrais da organização podem publicar"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Admins, moderadores, membros e visitantes"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Admins, moderadores e membros"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Admins e moderadores"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Apenas admins"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Ninguém"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Proprietário da organização"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administrador da organização"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderador"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Membro"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Visitante"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Endereço de IP desconhecido"
@@ -5142,20 +5699,20 @@ msgstr "um sistema operativo desconhecido"
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Argumento 'queue_id' em falta"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Argumento 'last_event_id' em falta"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5193,41 +5750,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Título não pode estar vazio."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "O campo tem de ter pelo menos uma opção."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Tipo de campo inválido"
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Já existe um campo com esse título."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5278,7 +5835,7 @@ msgstr "Tem de especificar pelo menos um endereço de e-mail."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5327,19 +5884,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Destinatário em falta"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5355,42 +5912,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5405,55 +5966,55 @@ msgstr "Pelo menos um dos seguintes argumentos tem de estar presente: emoji_name
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Pelo menos um método de autenticação tem de ser permitido."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Tem de carregar exactamente um ficheiro."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5487,7 +6048,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Tem de carregar exactamente um ícone."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5515,71 +6076,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Os canais privados não podem ser predefinidos."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "O canal já tem esse nome!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nada para fazer. Especifique pelo menos um entre \"adicionar\" ou \"apagar\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} criou os seguintes canais: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} criou o novo canal {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "novos canais"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5588,7 +6149,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Não está autorizado a ver este canal.
"
 
@@ -5612,112 +6173,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Nome de ficheiro inválido"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Tem de especificar um ficheiro para carregar"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Só pode carregar um ficheiro simultaneamente"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Alterações de avatar estão bloqueadas nesta organização."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "A alteração do endereço de e-mail está bloqueada nesta organização."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Palavra-passe errada!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Nova palavra-passe demasiado fraca!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Tem de carregar exactamente um avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Tema não silenciado"
 
@@ -5778,43 +6339,43 @@ msgstr "Endereços de e-mail descartáveis não são permitidos nesta organizaç
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Credenciais Zoom inválidas"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Falhou a criação de chamada Zoom"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5847,11 +6408,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "O tema não pode ficar em branco"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "O conteúdo não pode estar em branco"
 
@@ -5878,7 +6439,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5895,83 +6456,105 @@ msgstr "Mensagem do Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Não pode usar mobile_flow_otp e desktop_flow_otp juntos."
diff --git a/locale/pt_PT/translations.json b/locale/pt_PT/translations.json
index 77b6e06129..a99a44736a 100644
--- a/locale/pt_PT/translations.json
+++ b/locale/pt_PT/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(para sempre)",
   "(hidden)": "(oculto)",
-  "(no description)": "(sem descrição)",
   "(no topic)": "(sem tema)",
   "(or )": "",
   "(you)": "(voçê)",
   "({message_retention_days} days)": "({message_retention_days} dias)",
   "/dark (Switch to the dark theme)": "/dark (Mudar para o tema escuro)",
   "/light (Switch to light theme)": "/light (Mudar para o tema claro)",
-  "/me is excited (Display action text)": "/me está entusiasmado (Exibir texto de acção)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Onde vamos almoçar hoje? (Criar sondagem)",
-  "/todo (Create a todo list)": "/todo (Criar lista de afazeres)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dia",
   "1 hour": "1 hora",
   "1 week": "1 semana",
@@ -28,7 +27,7 @@
   "6 hours": "6 horas",
   "Total messages: {total_messages}": "Total de mensagens: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} será removido das mensagens em que foi partilhado. Esta acção não pode ser desfeita.
",
-  "Stream will be announced in #{notifications_stream}.
": "O canal será anunciado em #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Está a procurar mensagens enviadas por mais de uma pessoa, o que não é possível.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Está a procurar mensagens que pertencem a mais de um fluxo, o que não é possível.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Está a procurar mensagens que pertencem a mais de um tópico, o que não é possível.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Adicionar",
   "Add GIF": "Adicionar GIF",
+  "Add a description": "",
   "Add a new alert word": "Adicionar nova palavra-alerta",
   "Add a new bot": "Adicionar novo bot",
   "Add a new code playground": "Adicionar um novo playground de código",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "E-mail do bot",
   "Bot email (a-z, 0-9, and dashes only)": "E-mail do bot (a-z, 0-9, e travessões apenas)",
+  "Bot is deactivated": "",
   "Bot owner": "Dono do bot",
   "Bot type": "Tipo de bot",
   "Bots": "Bots",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Fechar esta janela de diálogo",
   "Code": "",
   "Code playgrounds": "Playgrounds de código",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Colapsar composição",
   "Collapse direct messages": "",
   "Collapse message": "Colapsar mensagem",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Definir os métodos de autenticação para a sua organização.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Definir os canais predefinidos aos quais novos membros são subscritos quando aderem à organização.",
   "Confirm": "Confirmar",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Considerar a pesquisar todos os fluxos públicos .",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "Copiar código",
   "Copy link": "Copiar link",
   "Copy link to message": "Copiar link da mensagem",
+  "Copy link to profile": "",
   "Copy link to topic": "Copiar link para o tema",
   "Copy mention syntax": "Copiar sintaxe da menção",
   "Copy version": "Copiar versão",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Apagar todos os rascunhos",
   "Delete all selected drafts": "",
   "Delete code playground?": "Apagar playground de código?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Apagar campo de perfil personalizado?",
   "Delete data export?": "Apagar exportação de dados?",
   "Delete draft": "Apagar rascunho",
@@ -413,7 +417,6 @@
   "Domain": "Domínio",
   "Don’t allow disposable email addresses": "Não permitir endereços de e-mail descartáveis",
   "Download": "Transferir",
-  "Download .zuliprc": "Transferir .zuliprc",
   "Download botserverrc": "Transferir botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Baixe a configuração de todos os bots de webhook de saída ativos no formato Zulip Botserver.",
   "Download file": "Transferir ficheiro",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Educação (fins lucrativos)",
   "Education (non-profit)": "Educação (sem fins lucrativos)",
   "Effect": "Efeito",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-mail",
   "Email address": "Endereço de e-mail",
   "Email address changes are disabled in this organization.": "A alteração do endereço de e-mail está bloqueada nesta organização.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Imagem",
   "In a meeting": "Em reunião",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Inactivo",
   "Inactive bots": "Bots inactivos",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "Gerir este bot",
   "Manage this user": "Gerir este utilizador",
   "Manage user": "Gerir utilizador",
+  "Manage your API key": "",
   "March": "Março",
   "Mark all messages as read": "Marcar todas como lidas",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Marcar como lida",
   "Mark as resolved": "Marcar como resolvido",
   "Mark as unread from here": "Marcar como não lido desde aqui",
@@ -722,6 +730,7 @@
   "Mentioned in": "Mencionado em",
   "Mentions": "Menções",
   "Menus": "Menus",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Enviar para #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Mensagem para #{stream_name} > {topic_name}",
   "Message actions": "Acções de mensagem",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Mensagem para {recipient_label}",
   "Message {recipient_names}": "Mensagem para {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Mensagem para {recipient_name} ({recipient_status})",
+  "Messages": "Mensagens",
   "Messages in all public streams": "Mensagens em todos os canais públicos",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Nunca expira",
   "New": "Novo",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Novo e-mail",
   "New message": "Nova mensagem",
   "New option": "Nova opção",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Próximo tema não lido",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Nenhum bot corresponde ao filtro atual.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Sem descrição.",
   "No drafts selected": "",
   "No drafts.": "Sem rascunhos.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Nenhum convite corresponde ao filtro atual.",
   "No language set": "Sem idioma definido",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Nenhum gerador de link definido.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Nenhum utilizador correspondente.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Nenhum tópico está marcado como resolvido.",
   "No topics match your current filter.": "Nenhum tema corresponde ao filtro atual.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Sem subscrições de grupo de utilizadores.",
   "No user groups": "",
   "No user to subscribe.": "Sem utilizadores para subscrever.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "Sem fins lucrativos (registada)",
   "None": "Nenhum",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Note que quaisquer bots que mantenha serão desativados.",
   "Note that organizations are limited to five exports per week.": "Note que as organizações estão limitadas a cinco exportações por semana.",
   "Nothing to preview": "Nada a pré-visualizar",
@@ -932,6 +940,7 @@
   "Other permissions": "Outras permissões",
   "Other settings": "Outras definições",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Adoentado",
   "Outgoing webhook message format": "Formato de mensagem de webhooks de saída",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Exigir temas em mensagens de canal",
   "Research": "Investigação",
   "Resend": "Reenviar",
-  "Resend invitation": "Reenviar convite",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "O reenvio deparou-se com um erro. Por favor, recarregue e tente novamente.",
+  "Reset to default notifications": "",
   "Reset zoom": "Repor zoom",
   "Restore draft": "Restaurar rascunho",
   "Restrict email domains of new users?": "Restringir domínios de e-mail de novos utilizadores?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Pesquisar por  no conteúdo do tema ou mensagem.",
   "Search people": "Pesquisar pessoas",
   "Search results": "Resultados de pesquisa",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Veja como configurar o e-mail.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Seleccione um canal abaixo ou altere o nome do tema.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Mostrar contador de mensagens destacadas",
   "Show status text": "Mostrar texto de estado",
   "Show unread counts for": "",
-  "Show/change your API key": "Ver/alterar a sua chave API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Inscrever-se",
   "Silent mentions do not trigger notifications.": "Menções silenciosas não acionam notificações.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "Endereço de e-mail do remetente:",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "A descrição do canal não pode conter caracteres de quebra de linha",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "As suas palavras-passe serão apagadas dos nossos sistemas, e quaisquer bots que mantenham serão desativados.",
   "Theme": "Tema",
+  "There are no bots.": "",
   "There are no current alert words.": "Não existem atualmente palavras-alerta.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "Este bot foi desactivado.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Quinta-feira",
   "Time": "Hora",
   "Time format": "Formato de hora",
@@ -1240,6 +1259,7 @@
   "Today": "Hoje",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Alternar subscrição",
   "Toggle the gear menu": "Alternar o menu de engrenagem",
   "Toggle topic mute": "Alternar silenciar tema",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "O Zulip precisa de enviar e-mails para confirmar os endereços dos utilizadores e enviar notificações.",
   "Zulip needs your permission to enable desktop notifications.": "O Zulip precisa da sua autorização para activar notificações de desktop.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "As traduções do Zulip são um contributo da nossa fabulosa comunidade de tradutores voluntários. Se gostaria de ajudar, veja as guidelines de tradução do Zulip.",
@@ -1541,6 +1561,9 @@
   "more topics": "mais temas",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} many {} other {}}",
diff --git a/locale/ro/LC_MESSAGES/django.po b/locale/ro/LC_MESSAGES/django.po
index d8f4bed8a6..ac5c75d938 100644
--- a/locale/ro/LC_MESSAGES/django.po
+++ b/locale/ro/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Viorel-Cosmin Miron , 2022-2023\n"
 "Language-Team: Romanian (http://app.transifex.com/zulip/zulip/language/ro/)\n"
@@ -25,57 +25,51 @@ msgstr ""
 "Language: ro\n"
 "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Nu este permis pentru utilizatorii în vizită"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Organizație nevalidă"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Huburi publice"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Huburi private"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Mesaje directe"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Mesaje directe de grup"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Lipsește fluxul pentru grafic: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Numele necunoscut al hărții: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Începutul este mai târziu decât sfârșitul. Început: {start}, Sfârșit: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Nu există date analitice. Vă rugăm contactați administratorul serverului."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Parametri Incorecţi"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -84,7 +78,7 @@ msgid ""
 "users to join."
 msgstr "Organizația dvs. nu mai are licențe Zulip și nu mai poate accepta utilizatori noi. Vă rugăm să [măriți numărul de licențe]({billing_page_link}) sau [dezactivați utilizatorii inactivi]({deactivate_user_help_page_link}) pentru a permite noilor utilizatori să se alăture."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -93,7 +87,7 @@ msgid ""
 "join."
 msgstr "Organizația dvs. mai are o singură licență Zulip rămasă. Puteți să [măriți numărul de licențe]({billing_page_link}) sau să [dezactivați utilizatorii inactivi]({deactivate_user_help_page_link}) pentru a permite mai multor utilizatori să se alăture."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -102,7 +96,7 @@ msgid ""
 "join."
 msgstr "Organizația dvs. mai are doar două licențe Zulip rămase. Puteți să [măriți numărul de licențe]({billing_page_link}) sau să [dezactivați utilizatorii inactivi]({deactivate_user_help_page_link}) pentru a permite mai mult de doi utilizatori să se alăture."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -111,7 +105,7 @@ msgid ""
 "join."
 msgstr "Organizația dvs. mai are doar trei licențe Zulip rămase. Puteți să [măriți numărul de licențe]({billing_page_link}) sau să [dezactivați utilizatorii inactivi]({deactivate_user_help_page_link}) pentru a permite mai mult de trei utilizatori să se alăture."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -120,11 +114,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Un membru nou ({email}) nu s-a putut alătura organizației dvs. deoarece toate licențele Zulip sunt în uz. Vă rugăm să [măriți numărul de licențe]({billing_page_link}) sau [dezactivați utilizatorii inactivi]({deactivate_user_help_page_link}) pentru a permite noilor membri să se alăture."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Toate licențele Zulip pentru această organizație sunt în uz în prezent."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -140,124 +134,124 @@ msgstr "Înregistrarea este dezactivată"
 msgid "Invalid remote server."
 msgstr "Server la distanță invalid."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Trebuie să achiziționați licențe pentru toți utilizatorii activi din organizația dvs. (minim {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Facturile cu mai mult de {max_licenses} licențe nu pot fi procesate din această pagină. Pentru a finaliza actualizarea, vă rugăm să contactați {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Nu există nicio metodă de plată în dosar."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} se termină în {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Metodă de plată necunoscută. Vă rugam contactați-ne aici {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Ceva nu a mers bine. Vă rugam contactați {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Ceva a funcționat greșit. Te rugam reîncărcă pagina."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Ceva a funcționat greșit. Te rugam să aștepți câteva secunde apoi reîncearcă."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Vă rugăm să adăugați un card de credit înainte de a începe testarea gratuită."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "Vă rugăm să adăugați un card de credit pentru a programa upgrade-ul."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Nu se poate actualiza planul. Planul a fost expirat și înlocuit cu un nou plan."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Nu se poate actualiza planul. Planul s-a încheiat."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "Nu se pot actualiza licențele în perioada de facturare curentă pentru planul de testare gratuită."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Nu se pot actualiza manual licențele. Planul dvs. este de gestionare automată a licențelor."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Planul dvs. este deja pe licențe {licenses} în perioada de facturare curentă."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Nu puteți reduce licențele în perioada curentă de facturare."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr "Nu se pot modifica licențele pentru următorul ciclu de facturare pentru un plan care este retrogradat."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Planul dvs. este deja programat să fie reînnoit cu licențe {licenses_at_next_renewal}."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Nimic de schimbat."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Niciun client pentru această organizație!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Sesiune nu a fost găsită"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Trebuie să fie administrator care facturează sau proprietarul organizaţiei"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Intenția de plată nu a fost găsită"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Treceți stripe_session_id sau stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -265,54 +259,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Cererea organizației dumneavoastră pentru găzduire sponsorizată a fost aprobată! Ați fost actualizat la {plan_name}, gratuit. {emoji}\n\nDacă ați putea {begin_link}să menționați Zulip ca sponsor pe site-ul dvs.{end_link}, am aprecia foarte mult!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "Tokenul de acces la facturare a expirat."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Token de acces la facturare nevalabil."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "Trebuie să acceptați Termenii de utilizare pentru a continua."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "Înregistrarea serverului dvs. a fost dezactivată."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Parametri Incorecţi"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Eroare"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Metoda nu este permisă (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Pagina nu a fost găsită (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -321,8 +322,41 @@ msgid ""
 "                        "
 msgstr "\n                        Dacă această eroare este neașteptată, puteți\n                        contactați asistența.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Metoda nu este permisă (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Eroare internă a serverului"
 
@@ -427,7 +461,7 @@ msgstr "Active în 15 zile"
 msgid "Total users"
 msgstr "Toți utilizatorii"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Utilizatorii"
 
@@ -567,37 +601,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Asigurați-vă că ați copiat corect link-ul în browserul dumneavoastră. Dacă încă mai întâmpinați această pagină, probabil că este vina noastră. Ne cerem scuze."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Facturare"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Închidere modal"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Nu contează"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Retrogradare"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Renunță"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Retrogradare"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Confirmă"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Nu contează"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Starea facturării"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Limita ratei a fost depășită"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Limita ratei a fost depășită."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Puteți încerca din nou în %(retry_after)s secunde."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Actualizați"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Convertiți organizația demo înainte de a face upgrade."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -618,6 +748,451 @@ msgstr "Categorii"
 msgid "All"
 msgstr "Toate"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Comunitatea de dezvoltare Zulip"
@@ -637,11 +1212,7 @@ msgstr "Alăturați-vă ca auto-găzduitor"
 msgid "Join as a contributor"
 msgstr "Alăturați-vă ca colaborator"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Starea facturării"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -656,12 +1227,12 @@ msgstr "Starea facturării"
 msgid "Create organization"
 msgstr "Creează organizația"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Planuri și prețuri"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -694,51 +1265,48 @@ msgstr "Prețuri pentru educație"
 msgid "View pricing"
 msgstr "Vedeți prețurile"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip pentru afaceri"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Contactează echipa de suport"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Din"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organizație"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Subiect"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Mesaj"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Trimite"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Multumim pentru mesaj"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Multumim pentru mesaj!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Vom fi în contact cu tine în curând."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -754,14 +1322,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Încercați Zulip acum"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Actualizați"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Convertiți organizația demo înainte de a face upgrade."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -809,7 +1369,7 @@ msgstr "Continuă"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Înscriere"
 
@@ -842,8 +1402,8 @@ msgstr "Ai deja un cont?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Autentificare"
 
@@ -876,26 +1436,22 @@ msgstr "Dacă acest mesaj nu dispare, încercați să re
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Eroare la încărcarea Zulip. Încercați să reîncărcați pagina."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Nu se poate conecta la Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Actualizările pot fi întârziate."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Reîncerc în curând…"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Încearcă acum."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Mesaje"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Eroare de subdomeniu de autentificare"
@@ -1118,21 +1674,21 @@ msgstr "Utilizatorii vizitatori"
 msgid "Normal users"
 msgstr "Utilizatori obișnuiți"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "Redirecționarea e-mailurilor către un cont de e-mail"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Închide"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Actualizează"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2355,8 +2911,8 @@ msgstr "Cererea dumneavoastră de sponsorizare Zulip a fost aprobată! Organiza
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
-msgstr "Dacă ați putea lista Zulip ca sponsor pe site-ul dvs., am aprecia foarte mult!."
+"appreciate it!"
+msgstr ""
 
 #: templates/zerver/find_account.html:4
 msgid "Find your accounts"
@@ -2375,7 +2931,16 @@ msgid ""
 "                    "
 msgstr "\n                    Email-uri trimise! Veți primi e-mailuri doar la adresele\n                    asociate cu organizațiile Zulip. Adresele introduse\n                    pe pagina anterioară sunt enumerate mai jos:\n                    "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2385,12 +2950,12 @@ msgid ""
 "                    "
 msgstr "\n                    Introduceți adresa dvs. de e-mail pentru a primi un e-mail cu URL-urile\n                    pentru toate organizațiile Zulip Cloud în care aveți\n                    conturi active. Dacă v-ați uitat și parola,\n                   o puteți reseta.\n                    "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Adresa de email"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Găsește conturi"
 
@@ -2422,7 +2987,7 @@ msgstr "Integrări"
 msgid "Desktop & mobile apps"
 msgstr "Aplicații desktop și mobile"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Organizație nouă"
 
@@ -2790,13 +3355,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Membrii noi nu se pot alătura acestei organizații, deoarece toate licențele Zulip sunt în uz. Contactați persoana care v-a invitat și cereți-i să mărească numărul de licențe, apoi încercați din nou."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Limita ratei a fost depășită"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Limita ratei a fost depășită."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2804,11 +3365,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Ați depășit limita pentru cât de des poate efectua un utilizator această acțiune."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Puteți încerca din nou în %(retry_after)s secunde."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2977,6 +3533,22 @@ msgstr "Ce te interesează?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Abonați-mă la buletinul informativ Zulip cu trafic redus (câteva e-mailuri pe an)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Resetează-ți parola"
@@ -3134,123 +3706,107 @@ msgid ""
 "                        "
 msgstr "\n                        Poți folosi Aplicatia pentru desktop Zulip.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "abonări"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} doar ce s-a înscris pe Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} a acceptat invitația ta pe Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "Nu se poate activa un cont de tip \"placeholder\"; cereți utilizatorului să se înregistreze."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Cartografiere invalidă a comenzilor."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Id-ul câmpului {id} nu a fost găsit."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "Nume de grup de flux implicit invalid \"{group_name}"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr "Numele grupului de flux implicit este prea lung (limită: {max_length} caractere)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr "Numele grupului de flux implicit \"{group_name}\" conține caractere NULL (0x00)."
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr "Grup de flux implicit invalid {group_name}"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' este un hub implicit și nu poate fi adăugat la '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Grupul implicit al hubului '{group_name}' deja există"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Hubul '{stream_name}' este deja prezent în grupul implicit al hubului '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Hubul '{stream_name}' nu este prezent în grupul implicit de hub '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr "Acest grup de flux implicit este deja denumit \"{group_name}\""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Pentru a proteja utilizatorii, Zulip limitează numărul de invitații pe care le puteți trimite într-o zi. Pentru că ați atins limita, nu au fost trimise invitații."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Contul dvs. este prea nou pentru a trimite invitații pentru această organizație. Întrebați un administrator al organizației sau un utilizator mai experimentat."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Câteva emailuri nu au fost validate așa că nu am trimis invitațile."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Nu am putut să invităm nici o persoană."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3280,72 +3836,72 @@ msgstr "Nu pot schimba conținutul mesajului în timp ce schimb hubul"
 msgid "Widgets cannot be edited."
 msgstr "Widgeturile nu pot fi editate."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Modificarea mesajelor este oprită în această organizație"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Nu aveți permisiunea de a edita acest mesaj"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Timpul limită pentru editarea acestui mesaj a expirat"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} a marcat acest subiect ca rezolvat."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} a marcat acest subiect ca nerezolvat."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Acest subiect a fost mutat în {new_location} de către {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Un mesaj a fost mutat din acest subiect în {new_location} de către {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} mesaje au fost mutate din acest subiect în {new_location} de către {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Acest subiect a fost mutat aici de la {old_location} de către {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[Un mesaj]({message_link}) a fost mutat aici din {old_location} de către {user}."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} mesaje au fost mutate aici din {old_location} de către {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Modificarea mesajelor este oprită în această organizație"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Nu aveți permisiunea de a edita acest mesaj"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Timpul limită pentru editarea acestui mesaj a expirat"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "Termenul limită pentru editarea subiectului acestui mesaj a expirat."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Nu aveți permisiunea de a muta acest mesaj"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Timpul limită pentru editarea fluxului acestui mesaj a expirat"
 
@@ -3364,137 +3920,142 @@ msgstr "Steguleț care nu poate fi editat: \"{flag}"
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "Operațiune de marcare a mesajului invalidă: \"{operation}"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Mesaj nevalid(e)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Imposibil de redat mesajul"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Se așteaptă exact un hub"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Tip nevalid de date pentru hub"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Tip de date nevalid pentru destinatari"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Lista destinatarilor poate conține emailuri sau ID, dar nu ambele."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Botul tău {bot_identity} a încercat să trimită un mesaj în hubul cu ID {stream_id}, dar nu există nici un hub cu acest ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Botul tău {bot_identity} a încercat să trimită un mesaj în hubul {stream_name}, dar acesta nu există. Apasă [aici]({new_stream_link}) pentru a-l crea."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Botul tău {bot_identity} a încercat să trimită un mesaj în hubul {stream_name}. Hubul există dar nu are abonați."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Mesajele directe sunt dezactivate în această organizație."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr "Nu aveți permisiunea de a accesa unii dintre destinatari."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Subiectele sunt necesare în această organizație"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: Programatorul API a trimis JSON conținut nevalid"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Un emoji personalizat cu acest nume deja există."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr "Lista ordonată nu trebuie să conțină linkificatori duplicați"
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr "Lista ordonată trebuie să enumere toți linkificatorii existenți exact o dată"
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Mesajul programat a fost deja trimis"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "Termenul de livrare programat trebuie să fie în viitor."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Mesajul nu a putut fi trimis la ora programată."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Mesajul pe care l-ați programat pentru {delivery_datetime} nu a fost trimis din cauza următoarei erori:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[Vezi mesajele programate](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Fluxul este deja dezactivat"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Fluxul nu este dezactivat în prezent"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Fluxul numit {stream_name} există deja"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "Flux {stream_name} ne-arhivat."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} a schimbat [permisiunile de acces](/help/stream-permissions) pentru acest flux din **{old_policy}** în **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3503,38 +4064,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} a schimbat [permisiunile de postare](/help/stream-sending-policy) pentru acest flux:\n\n* **Permisiuni vechi**: {old_policy}.\n* **Permisiuni noi**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} a redenumit hubul {old_stream_name} la {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Fără descriere."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} modificat descrierea acestui flux."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Descriere veche"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Descriere nouă"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Pentru totdeauna"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Mesajele din acest flux vor fi acum păstrate pentru totdeauna."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3548,7 +4109,7 @@ msgstr "{user} a modificat [perioada de păstrare a mesajelor](/help/message-ret
 msgid "You cannot attach a submessage to this message."
 msgstr "Nu puteți atașa un submesaj la acest mesaj."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr "ID-ul de utilizator invalid {user_id}"
@@ -3558,187 +4119,187 @@ msgstr "ID-ul de utilizator invalid {user_id}"
 msgid "User group '{group_name}' already exists."
 msgstr "Grupul de utilizatori \"{group_name}\" există deja."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Acest APInu este disponibil pentru incoming webhook bots."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Contul nu este asociat cu acest subdomeniu"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Acest endpoint nu acceptă solicitări de la boți."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Trebuie să fii un administrator de server"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Permisiune insuficientă"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Acest endpoint necesită autorizare HTTP de bază."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Antet de autorizare nevalid pentru auth basic"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Lipsește antetul autorizației pentru autentificarea de bază"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Boții webhook pot accesa doar webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "{username} contului a fost dezactivat. Vă rugăm să contactați administratorul organizației pentru a-l reactiva."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Parola este prea slabă."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomeniul trebuie să aibă lungimea 3 sau mai mare."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomeniul nu poate începe sau termina cu '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomeniul poate avea litere mici, numere și  '-'s."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Subdomeniul este deja utilizat. Vă rugăm să alegeți un alt subdomeniu."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Subdomeniu rezervat. Vă rugăm să alegeți un alt domeniu."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Te rog folosește-ți adresa ta reală de email."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Organizația în care vrei să intri cu {email} nu există."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Vă rugăm să solicitați o invitație pentru {email} de la administratorul organizației."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Adresa de email, {email}, nu este între domeniile care sunt permise pentru a crea un cont în această organizație."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Adresele de e-mail conținând + nu sunt permise în această organizație."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Membrii noi nu se pot alătura acestei organizații, deoarece toate licențele Zulip sunt în uz. Contactați persoana care v-a invitat și cereți-i să mărească numărul de licențe, apoi încercați din nou."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Parola nouă"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Confirmare parolă nouă"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr "Faceți prea multe încercări de a vă autentifica. Încercați din nou în {seconds} secunde sau contactați administratorul organizației dumneavoastră pentru ajutor."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Parola a fost dezactivată deoarece este prea slabă. Resetați parola pentru a crea una nouă."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Sfat: Puteți introduce mai multe adrese de e-mail cu virgule între ele."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Te rog introdu cel puțin 10 emailuri."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Nu am găsit acea organizație Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "E-mail invalid '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Lipsește subiectul"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Nu pot trimite către mai multe fluxuri"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Hub lipsă"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Mesajul trebuie să aibă destinatari"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Tip de mesaj nevalid"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Atașament nevalid"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "A apărut o eroare la ștergerea atașamentului. Te rog încearcă mai târziu."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Mesajul trebuie să aibă destinatari!"
 
@@ -3795,88 +4356,88 @@ msgstr "Utilizatorul a dezactivat sincronizarea schițelor."
 msgid "Draft does not exist"
 msgstr "Proiectul nu există"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Deschide Zulip pentru a vedea conținutul spoiler"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr "{service_name} notificări"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Adresă nevalidă."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "În afara domeniului tău."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Adrese de email care conțin + nu sunt permise."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Rezervat pentru boții de sistem."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} are deja un cont"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Are deja un cont."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Contul a fost dezactivat."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "Emoji \"{emoji_name}\" nu există"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Emoji personalizat nevalid."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Nume emoji nevalid."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Acest emoji personalizat a fost dezactivat."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Cod emoji invalid."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Nume emoji nevalid."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Tip emoji nevalid."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Trebuie să fii un administrator al organizației sau autorul emoji-ului"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Numele emoji trebuie să se termine fie cu o literă, fie cu o cifră."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Numele emoji trebuie să conțină numai litere englezești minuscule, cifre, spații, liniuțe și caractere de subliniere."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Numele emoji-ului lipsește"
 
@@ -3884,119 +4445,119 @@ msgstr "Numele emoji-ului lipsește"
 msgid "Could not allocate event queue"
 msgstr "Nu pot aloca lista de evenimente"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Deconectat: este necesară autentificarea API sau sesiunea de utilizator"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Hubul '{stream}' nu există"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Hubul cu ID '{stream_id}' nu există"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "proprietarul organizației"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "utilizator"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Nu pot dezactiva singura {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Instrucțiune de includere Markdown nevalidă: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Utilizarea API-ului depășește rata limită"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON malformat"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Trebuie să fie membru in organizaţie"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Trebuie să fie un administrator de organizație"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Trebuie să fie un proprietar al organizației"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Numele dvs. de utilizator sau parola sunt incorecte"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Contul este dezactivat"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Această organizație a fost dezactivată"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Înregistrarea serviciului de notificare push mobil pentru serverul dvs. a fost dezactivată"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Autentificarea prin parolă este dezactivată în această organizație"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Parola dvs. a fost dezactivată și trebuie resetată"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Cheie API nevalidă"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Cheie API malformată"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr "Evenimentul '{event_type}' nu este în prezent acceptat de către webhook-ul {webhook_name}; ignorarea"
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Nu se poate analiza solicitarea: {webhook_name} a generat acest eveniment?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Utilizatorul nu este autentificat"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Domeniu nevalid"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Acces interzis"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4004,47 +4565,47 @@ msgid ""
 "messages in this topic."
 msgstr "Aveți permisiunea de a muta doar {total_messages_allowed_to_move}/{total_messages_in_topic} cele mai recente mesaje din acest subiect."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reacția deja există."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reacția nu există."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr "Organizație neînregistrată"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "Nu aveți permisiunea de a utiliza mențiuni wildcard în acest flux."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "Nu aveți permisiunea de a utiliza mențiunile wildcard ale subiectului în acest subiect."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Nume utilizator Twitter"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "Numele de utilizator GitHub"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Contul extern personalizat trebuie să definească modelul URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Tip de cont extern nevalid"
 
@@ -4142,106 +4703,106 @@ msgstr "Productivitate"
 msgid "Version control"
 msgstr "Controlul versiunii"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Mesajul nu trebuie să fie gol"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Mesajul nu poate conține biți null"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr "Nu aveți voie să menționați grupul de utilizatori \"{user_group_name}\". Trebuie să fiți membru al grupului \"{can_mention_group_name}\" pentru a menționa acest grup."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr "Operatorul {operator} nu este acceptat."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Operator de limitare nevalid: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Lipsește argumentul 'anchor' ."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Ancora nevalidă"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Dacă sunteți nou în Zulip, consultați ghidul nostru [Utilizarea Zulip pentru o clasă]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Dacă sunteți nou în Zulip, consultați [Ghidul de început]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "Avem, de asemenea, un ghid pentru [Configurarea Zulip pentru o clasă]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "Avem, de asemenea, un ghid pentru [Crearea organizației dvs.]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Rețineți că aceasta este o [organizație demo]({demo_organization_help_url}) și va fi **ștersă automat** în 30 de zile."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Salut și bine ai venit pe Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Acesta este un mesaj direct de la mine, Welcome Bot."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "De asemenea, vă pot ajuta să vă configurați! Doar faceți clic oriunde pe acest mesaj sau apăsați `r` pentru a răspunde."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Iată câteva mesaje pe care le înțeleg:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Puteți [descărca](/apps) [aplicațiile mobile și desktop](/apps). Zulip funcționează excelent și într-un browser."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Accesați [Setări profil](#settings/profile) pentru a adăuga o [fotografie de profil](/help/change-your-profile-picture) și editați [informațiile de profil](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4250,119 +4811,119 @@ msgid ""
 "experience."
 msgstr "Accesați [Preferences](#settings/preferences) pentru a [comuta între temele luminoase și întunecate](/help/dark-theme), [alegeți tema preferată pentru emoji](/help/emoji-and-emoticons#change-your-emoji-set), [schimbați limba](/help/change-your-language) și pentru a face alte modificări ale experienței dumneavoastră Zulip."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "În Zulip, transmite în flux [determină cine primește un mesaj](/help/streams-and-topics). Sunt similare cu canalele din alte aplicații de chat."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Răsfoiește și abonează-te la fluxuri](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "În Zulip, subiectele [vă spun despre ce este vorba despre un mesaj](/help/streams-and-topics). Sunt subiecte ușoare, foarte asemănătoare cu subiectul unui e-mail."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Verifică [Conversații recente](#recent) pentru a vedea ce se întâmplă! Vă puteți întoarce la această conversație făcând clic pe \"Mesaje directe\" în stânga sus."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "[Comenzile rapide de la tastatură] (#keyboard-shortcuts) de la Zulip vă permit să navigați rapid și eficient în aplicație."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Apăsați `?` oricând pentru a vedea o [cheat sheet](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip folosește [Markdown](/help/format-your-message-using-markdown), un format intuitiv pentru **bold**, *italic*, liste cu marcatori și multe altele. Faceți clic [aici](#message-formatting) pentru o foaie de cheat."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Consultați [sfaturile noastre de mesagerie](/help/messaging-tips) pentru a afla despre reacțiile emoji, blocurile de cod și multe altele!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Consultați [Ghidul de început](/help/getting-started-with-zulip) sau răsfoiți [Centrul de ajutor](/help/) pentru a afla mai multe!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Îmi pare rău, nu am înțeles mesajul tău. Vă rugăm să încercați una dintre următoarele comenzi:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Acesta este un hub privat, așa cum indică și iconița lacăt de lânga numele hubului."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Mesajele private sunt vizibile doar membrilor hubului."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Pentru a administra acest hub mergi la [Setările hubului]({stream_settings_url}) și apasă  `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Acesta este un mesaj în hubul #**{default_notification_stream_name}** cu subiectul `demonstrație subiect`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Subiectele sunt unelte simple pentru organizarea conversațiilor."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Poți afla mai multe despre subiecte la [Huburi și subiecte]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Acesta este un mesaj din hubul #**{default_notification_stream_name}** cu subiectul `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr "[Începeți un subiect nou]({start_topic_help_url}) de fiecare dată când nu răspundeți la un mesaj anterior."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "JSON nevalid în răspuns"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Format de răspuns nevalid"
 
@@ -4376,45 +4937,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "Opțiuni MCG nevalabile pentru bouncer: {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Tokenul nu există"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Această organizație a dezactivat includerea conținutului mesajelor în notificările push pe mobil"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} a menționat @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} te-a menționat:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} a menționat pe toți:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Notificare de testare"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr "Aceasta este o notificare de testare de la {realm_name} ({realm_uri})."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Dispozitivul nu este recunoscut"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr "Dispozitiv nerecunoscut de către push bouncer"
 
@@ -4426,23 +4987,23 @@ msgstr "Tip de date nevalabil pentru ID-ul fluxului"
 msgid "Recipient list may only contain user IDs"
 msgstr "Lista de destinatari poate conține numai ID-uri de utilizator"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Utilizator neautorizat pentru această interogare"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' nu mai folosește Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "Nu puteți trimite mesaje directe în afara organizației dumneavoastră."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr "Eroare de respingere a notificărilor push: {error}"
@@ -4462,21 +5023,21 @@ msgstr "Argument '{var_name}' lipsă"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Valoare greșită pentru  '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Sarcină utilă malformată"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "Argumentul \"{name}\" nu este JSON valid."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Mesajul programat nu există"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr "{service_name} securitatea contului"
@@ -4513,7 +5074,7 @@ msgstr "Te rog alege doar: 'hub' sau 'hub_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "ID de hub nevalid"
 
@@ -4527,7 +5088,7 @@ msgstr "Numele fluxului \"{stream_name}\" este deja ocupat."
 msgid "Invalid stream name '{stream_name}'"
 msgstr "Nume de flux invalid '{stream_name}'"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "Un flux implicit nu poate fi privat."
 
@@ -4536,7 +5097,7 @@ msgstr "Un flux implicit nu poate fi privat."
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "Fluxul (fluxurile) ({stream_names}) nu există"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Fluxurile publice web nu sunt activate."
 
@@ -4568,28 +5129,28 @@ msgstr "Subiectul nu poate fi gol!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr "Caracter nevalabil în subiect, la poziția {position}!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "În acest hub nu sunt disponibile date despre abonați"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Nu pot prelua abonații pentru hubul privat"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} nu este boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} nu este o dată"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} nu este dict"
@@ -4600,18 +5161,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr "Argumentul \"{argument}\" la {var_name} este neașteptat"
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} nu este float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} este prea mic"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} nu este integer"
@@ -4621,24 +5182,24 @@ msgstr "{var_name} nu este integer"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} nu este JSON valid"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} este prea mare"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} nu este o listă"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} nevalid"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} este prea lung (limit: {max_length} caractere)"
@@ -4648,8 +5209,8 @@ msgstr "{var_name} este prea lung (limit: {max_length} caractere)"
 msgid "{var_name} is too short."
 msgstr "{var_name} este prea scurt."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} nu este un șir"
@@ -4668,21 +5229,21 @@ msgstr "Invalid {var_name}: {msg}"
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Numărul de cuvinte urcate depașesc limita impusă de organizația ta."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Nu am reușit să decodăm imaginea; sigur ai urcat o imagine?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Mărimea imaginii depășește limitele permise."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Imagine animată coruptă."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Format de imagine animat necunoscut."
 
@@ -4739,161 +5300,161 @@ msgstr "Numele grupului de utilizatori nu poate depăși {max_length} caractere.
 msgid "User group name cannot start with '{prefix}'."
 msgstr "Numele grupului de utilizatori nu poate începe cu \"{prefix}\"."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Nume prea lung!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Nume prea scurt!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Caractere nevalide în nume!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Format nevalid!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Numele este deja folosit!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Nume sau nume de utilizator incorect"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "Integrare invalidă '{integration_name}'."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr "Lipsesc parametrii de configurare: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr "Valoare {key} invalidă {value} ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Date de configurare nevalide!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Tip de bot nevalid"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Tip de interfață nevalidă"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr "ID-ul de utilizator invalid: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Nu există un astfel de bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Nu există un astfel de utilizator"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Utilizator dezactivat"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} nu poate fi gol."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} are lungime incorectă {length}; ar trebui să fie {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} nu este un fus orar recunoscut"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} nu este un cod hex valid"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} trebuie să aibă exact {length} elemente"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "Cheia {key_name} lipsește din {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr "Argumente neașteptate: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} nu este allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} este greșit/ă)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} nu este un URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "Modelul adresei URL trebuie să conțină \"%(username)s\"."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' nu poate fi gol."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Câmpul nu trebuie să aibă opțiuni dublate."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' nu este o opțiune validă pentru '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} nu este un șir sau o listă integer"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} nu este un string sau integer"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} nu are o lungime"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} lipsește"
@@ -4927,215 +5488,211 @@ msgstr "Eroare CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr "Configurarea greșită a proxy-ului invers: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "evenimentele hubului"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Disponibil pe Zulip Cloud Standard. Faceți upgrade pentru acces."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr "Disponibil pe Zulip Cloud Plus. Faceți upgrade pentru a avea acces."
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "Integrarea GIPHY dezactivată"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "Permiteți GIF-uri clasificate Y (public foarte tânăr)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "Permiteți GIF-uri clasificate G (Public general)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "Permiteți GIF-uri clasificate PG (Indicații pentru părinți)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "Permiteți GIF-uri clasificate PG-13 (Indicații pentru părinți - sub 13 ani)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "Permiteți GIF-uri clasificate R (Restricționat)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Caractere nevalide în numele emoji"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr "Expresie regulată greșită: {regex}"
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Eroare de expresie regulată necunoscută"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Șablon URL invalid."
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "Grupul %(name)r din șablonul URL nu este prezent în modelul de linkifier."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Grupul %(name)r din modelul de linkifier nu este prezent în șablonul URL."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Caractere nevalabile în limbajul pygments"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr "Lipsește variabila necesară \"code\" în șablonul URL"
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr "\"code\" ar trebui să fie singura variabilă prezentă în șablonul URL"
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Administratori, moderatori, membri și invitați"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Administratori, moderatori și membri"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Administratori și moderatori"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Administratori doar"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Nimeni"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Utilizator necunoscut"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Proprietarul organizaţiei"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Administratorul organizației"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderator"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Membru"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Vizitator"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-public"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Public"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Istorie privată, comună"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Istorie privată, protejată"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Istorie publică, protejată"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Toți membrii hubului pot scrie"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Doar administratorii organizației pot posta"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Numai administratorii și moderatorii organizației pot posta"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Numai membrii cu drepturi depline al organizației pot posta"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Emoji unicode"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Emoji personalizat"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Emoji extra Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr "Utilizatorul cu ID {user_id} este dezactivat"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr "Utilizatorul cu ID-ul {user_id} este un bot"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Lista opțiunilor"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Alege persoana"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Test scurt"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Test lung"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Alege data"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Cont extern"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Pronume"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Expresie regulată greșită: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Eroare de expresie regulată necunoscută"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Șablon URL invalid."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "Grupul %(name)r din șablonul URL nu este prezent în modelul de linkifier."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Grupul %(name)r din modelul de linkifier nu este prezent în șablonul URL."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Emoji unicode"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Emoji personalizat"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Emoji extra Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Caractere nevalide în numele emoji"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Caractere nevalabile în limbajul pygments"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "Lipsește variabila necesară \"code\" în șablonul URL"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "\"code\" ar trebui să fie singura variabilă prezentă în șablonul URL"
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "evenimentele hubului"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Disponibil pe Zulip Cloud Standard. Faceți upgrade pentru acces."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "Disponibil pe Zulip Cloud Plus. Faceți upgrade pentru a avea acces."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "Integrarea GIPHY dezactivată"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Permiteți GIF-uri clasificate Y (public foarte tânăr)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "Permiteți GIF-uri clasificate G (Public general)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "Permiteți GIF-uri clasificate PG (Indicații pentru părinți)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "Permiteți GIF-uri clasificate PG-13 (Indicații pentru părinți - sub 13 ani)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "Permiteți GIF-uri clasificate R (Restricționat)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-public"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Public"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Istorie privată, comună"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Istorie privată, protejată"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Istorie publică, protejată"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Toți membrii hubului pot scrie"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Doar administratorii organizației pot posta"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Numai administratorii și moderatorii organizației pot posta"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Numai membrii cu drepturi depline al organizației pot posta"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Administratori, moderatori, membri și invitați"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Administratori, moderatori și membri"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Administratori și moderatori"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Administratori doar"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Nimeni"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Utilizator necunoscut"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Proprietarul organizaţiei"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Administratorul organizației"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderator"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Membru"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Vizitator"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Adresă IP necunoscută"
@@ -5148,20 +5705,20 @@ msgstr "un sistem de operare necunoscut"
 msgid "An unknown browser"
 msgstr "Un browser necunoscut"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Lipsește argumentul 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Lipsește argumentul 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Un eveniment mai nou decât  {event_id} a fost șters!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Evenimentul {event_id} nu a fost în această listă"
@@ -5199,41 +5756,41 @@ msgstr "Parola este incorectă."
 msgid "User-Agent header missing from request"
 msgstr "Lipsește antetul User-Agent din cerere"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Eticheta nu poate fi goală."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Câmpul trebuie să aibă măcar o opțiune."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Tipul de câmp nu este acceptat pentru afișare în rezumatul profilului."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Tip de câmp nevalid."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Doar 2 câmpuri de profil particularizate pot fi afișate în rezumatul profilului."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Un câmp cu această etichetă deja există."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Câmplul implicit personalizat nu poate fi actualizat."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Endpointul nu este disponibil în producţie."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend nu este activat."
 
@@ -5284,7 +5841,7 @@ msgstr "Specifică macar o adresă de email."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "Fluxul nu există cu id: {stream_id}. Nu a fost trimisă nicio invitație."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "Nu aveți permisiunea de a abona alți utilizatori la fluxuri."
 
@@ -5333,19 +5890,19 @@ msgstr "Ancora poate fi exclusă numai la un capăt al intervalului"
 msgid "No such topic '{topic}'"
 msgstr "Nu există un astfel de subiect '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Lipseste expeditorul"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Mirroring nu este permis cu ID-urile de utilizator destinatar"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Mesaj mirrored nevalid"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Mirroring Zephyr nu este permis în această organizație"
 
@@ -5361,42 +5918,46 @@ msgstr "Utilizator deja dezactivat"
 msgid "User is not muted"
 msgstr "Utilizatorul nu este dezactivat"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Presence nu este suportat pentru utilizatorii boți."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Nu există date de prezență pentru {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Clientul nu a trecut nici o valoare nouă."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Clientul trebuie să transmită emoji_name dacă transmite fie emoji_code, fie reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "Stare invalidă: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "ID-ul aplicației nu este valid"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token gol sau de lungime nevalidă"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Token APNS nevalid"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "Eroare returnată de către bouncer: {result}"
@@ -5411,55 +5972,55 @@ msgstr "Cel puțin unul din următoarele argumente trebuie să fie prezente: emo
 msgid "Read receipts are disabled in this organization."
 msgstr "Confirmările de citire sunt dezactivate în această organizație."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Limba invalidă '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Cel puțin o metodă de autentificare trebuie activată."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "Video_chat_provider invalid {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "Giphy_rating nevalabil {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Trebuie să fie o organizație demonstrativă."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "Domeniu invalid: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Domeniul {domain} este deja parte din organizația ta."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Nu am găsit date despre domeniul {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Urca doar un fișier."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Numai administratorii pot modifica emoji implicite."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "Fișierul încărcat este mai mare decât limita permisă de {max_size} MiB"
@@ -5493,7 +6054,7 @@ msgstr "Exportul este încă în desfășurare"
 msgid "You must upload exactly one icon."
 msgstr "Urcă doar un icon."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier not found."
 
@@ -5521,71 +6082,71 @@ msgstr "Format de cerere nevalabil"
 msgid "Invalid DSN"
 msgstr "DSN invalid"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Fluxurile private nu pot fi transformate în fluxuri implicite."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Trebuie să treci \"new_description\" sau \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Valoare nevalidă pentru \"op\". Specifică unul din \"add\" sau \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Hubul are deja acest nume!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Nimic de făcut. Specifică cel puțin un \"adaugă\" sau \"șterge\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} s-a abonat la hubul tău {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} te-a abonat la următoarele huburi:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Nu pot accesa hubul ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Puteți invita doar alți utilizatori de oglindire Zephyr la fluxuri private."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} a creat următoarele huburi: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} a creat un hub nou {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "huburi noi"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** flux creat de {user_name}. **Descriere:__________:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "Proprietate de abonament necunoscută: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "Nu este abonat la fluxul id {stream_id}"
@@ -5594,7 +6155,7 @@ msgstr "Nu este abonat la fluxul id {stream_id}"
 msgid "Invalid json for submessage"
 msgstr "Json nevalid pentru submesaj"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Nu eești autorizat să vezi acest fișier.
"
 
@@ -5618,112 +6179,112 @@ msgstr "Listă goală \"către"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "Utilizatorul a dezactivat notificările de tastare pentru mesajele directe"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr "Acest fișier nu există sau a fost șters.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Token nevalid"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Nume de fișier nevalid"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Specifică un fișier să îl urcăm"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Poți urca un fișier odată"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Nu sunt date noi"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} te-a adăugat la grupul {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} te-a eliminat din grup {group_name}."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Utilizatorul {user_id} este deja membru în acest grup"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "Nu există niciun membru \"{user_id}\" în acest grup de utilizatori"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Grupul de utilizatori {group_id} este deja un subgrup al acestui grup."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "Grupul de utilizatori {user_group_id} este deja un subgrup al unuia dintre subgrupurile transmise."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Grupul de utilizatori {group_id} nu este un subgrup al acestui grup."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Schimbările de avataruri sunt dezactivate în această organizație."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Modificarea adresei de email este interzisă de această organizație."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "default_language invalidă"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "Sunet de notificare invalid '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "Perioadă nevalabilă de distribuire pe loturi a e-mailurilor: {seconds} secunde"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Parola ta Zulip este administrata în LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Parolă greșită!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "Faci prea multe încercări! Încearcă din nou în {seconds} secunde."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Noua parolă e prea nesigură!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Urcă doar un avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Subiectul nu este marcat - fără alertă sonoră"
 
@@ -5784,43 +6345,43 @@ msgstr "Adrese de email dispozabile nu sunt permise în aceasta organizație"
 msgid "Email '{email}' already in use"
 msgstr "Email '{email}' deja în uz"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Token de acces Zoom nevalid"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Nu s-au configurat datele de acreditare pentru Zoom"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Identificator de sesiune Zoom nevalid"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Credențiale Zoom nevalide"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Am eșuat apelul Zoom"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton nu este configurat."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Semnătură invalidă."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Eroare la conectarea la serverul BigBlueButton."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Eroare la autentificare pe serverul BigBlueButton."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Serverul BigBlueButton a returnat o eroare neașteptată."
 
@@ -5853,11 +6414,11 @@ msgstr "Încărcare nevalidă"
 msgid "Unknown webhook request"
 msgstr "Solicitare webhook necunoscută"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Subiectul nu poate fi gol"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Conținutul nu poate fi gol"
 
@@ -5884,7 +6445,7 @@ msgstr "Noul webhookrelic necesită ca starea să fie în [created|activated|ack
 msgid "Events key is missing from payload"
 msgstr "Cheia evenimentelor lipsește din sarcina utilă"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Imposibil de gestionat Pivotal payload"
 
@@ -5901,83 +6462,105 @@ msgstr "Mesaj din Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "Acțiune webhook necunoscută pentru WordPress: {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "Exportul de date este finalizat. [Vizualizați și descărcați exporturile]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Subdomeniu nevalid pentru bouncerul cu notificări push"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Trebuie validat cu o cheie API validă Zulip"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "UUID nevalid"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Tip de token nevalid"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} nu este un nume de gazdă valid"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "Lipsește ios_app_id"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "Lipsă user_id sau user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "Proprietate invalidă {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Datele sunt în dezordine."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "Înregistrare duplicată detectată."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "Date de jurnal de audit malformate"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Trebuie să vă resetați parola."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Lipsește parametrul id_token"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "OTP nevalid"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Nu pot folosi mobile_flow_otp și desktop_flow_otp împreună."
diff --git a/locale/ro/translations.json b/locale/ro/translations.json
index 2c545f528d..f3ce80934a 100644
--- a/locale/ro/translations.json
+++ b/locale/ro/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(fisier atasat)",
   "(forever)": "(pentru totdeauna)",
   "(hidden)": "(ascuns)",
-  "(no description)": "(fară participare)",
   "(no topic)": "(nici un subiect)",
   "(or )": "(sau )",
   "(you)": "(tu)",
   "({message_retention_days} days)": "({message_retention_days} zile)",
   "/dark (Switch to the dark theme)": "/dark (Comutați la tema întunecată)",
   "/light (Switch to light theme)": "/light (Comutați la tema luminoasă)",
-  "/me is excited (Display action text)": "/me este entuziasmat (Afișează textul de acțiune)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Unde ar trebui să mergem la prânz astăzi? (Creează un sondaj)",
-  "/todo (Create a todo list)": "/todo (Creează o listă de lucruri)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 zi",
   "1 hour": "1 oră",
   "1 week": "1 săptămână",
@@ -28,7 +27,7 @@
   "6 hours": "6 ore",
   "Total messages: {total_messages}": "Total mesaje : {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} va fi eliminat din mesajele în care a fost partajat. Această acțiune nu poate fi anulată.
",
-  "Stream will be announced in #{notifications_stream}.
": "Fluxul va fi anunțat în #{notifications_stream} .
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Căutați mesaje care sunt trimise de mai multe persoane, ceea ce nu este posibil.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Căutați mesaje care aparțin mai multor fluxuri, ceea ce nu este posibil.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Căutați mesaje care aparțin mai multor subiecte, ceea ce nu este posibil.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Activitate necunoscută",
   "Add": "Adaugă",
   "Add GIF": "Adăugați GIF",
+  "Add a description": "",
   "Add a new alert word": "Adaugă un nou cuvânt alertă",
   "Add a new bot": "Adaugă un nou bot",
   "Add a new code playground": "Adăugați un nou loc de joacă cu coduri",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Email bot",
   "Bot email (a-z, 0-9, and dashes only)": "Email bot (doar a-z, 0-9, și liniuțe)",
+  "Bot is deactivated": "",
   "Bot owner": "Proprietarul botului",
   "Bot type": "Tipul botului",
   "Bots": "Boți",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Închideți această fereastră de dialog",
   "Code": "",
   "Code playgrounds": "Cod locuri de joacă",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Playground-uri de cod sunt medii interactive de dezvoltare în browser, cum ar fi replit, care sunt concepute pentru a face mai convenabilă editarea și depanarea codului. Blocurile de cod Zulip code blocks care sunt etichetate cu un limbaj de programare vor avea un buton vizibil la trecerea cursorului care permite utilizatorilor să deschidă blocul de cod pe site-ul playground-ului de cod.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Restrângeți scrierea",
   "Collapse direct messages": "Collapse direct messages",
   "Collapse message": "Mesaj de colapsare",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Configurează metoda de autentificare în organizația ta.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Configurează huburile implicite la care utilizatorii noi sunt abonați când intră în organizația ta.",
   "Confirm": "Confirmă",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Considerăcăutând toate fluxurile publice.",
   "Contact a moderator to resolve this topic.": "Contactați un moderator pentru a rezolva acest subiect.",
   "Contact a moderator to unresolve this topic.": "Contactați un moderator pentru a rezolva această problemă.",
@@ -292,6 +294,7 @@
   "Copy code": "Copiați codul",
   "Copy link": "Copiază legătură",
   "Copy link to message": "Copiați linkul către mesaj",
+  "Copy link to profile": "",
   "Copy link to topic": "Copiați linkul către subiect",
   "Copy mention syntax": "Copiați sintaxa menționării",
   "Copy version": "Copiați versiunea",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Ștergeți toate schițele",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Șterge schița",
@@ -413,7 +417,6 @@
   "Domain": "Domeniul",
   "Don’t allow disposable email addresses": "Nu permite adrese de email dispozabile",
   "Download": "Descarcă",
-  "Download .zuliprc": "Descarcă .zuliprc",
   "Download botserverrc": "Descarcă botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Descărcați configurarea tuturor bot-urilor active de hook-uri în format Zulip Botserver.",
   "Download file": "Descarcă fișierul",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Efect",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "Adresa de email",
   "Email address changes are disabled in this organization.": "Modificarea adresei de email este interzisă de această organizație.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Imagine",
   "In a meeting": "Într-o întâlnire",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Boți inactivi",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "Gestionați acest utilizator",
   "Manage user": "Gestionați utilizatorul",
+  "Manage your API key": "",
   "March": "Martie",
   "Mark all messages as read": "Marcați toate mesajele citite",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Marchează citit",
   "Mark as resolved": "Marcați ca rezolvat",
   "Mark as unread from here": "Mark as unread from here",
@@ -722,6 +730,7 @@
   "Mentioned in": "Menționat în",
   "Mentions": "Menționări",
   "Menus": "Meniuri",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Mesaj #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Mesaj #{stream_name} > {topic_name}",
   "Message actions": "Acțiunile mesajului",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Mesaj {recipient_label}",
   "Message {recipient_names}": "Mesaj {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Mesaj {recipient_name} ({recipient_status})",
+  "Messages": "Mesaje",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Nu expiră niciodată",
   "New": "Nou",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Email nou",
   "New message": "Mesaj nou",
   "New option": "Opțiune nouă",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Următorul subiect necitit",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Nici un bot nu corespunde filtrului curent.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Fără descriere.",
   "No drafts selected": "",
   "No drafts.": "Fără schițe.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Nicio invitație nu se potrivește cu filtrul curent.",
   "No language set": "Nu este setată limba",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Nu sunt setate linkifiers",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Nu există utilizatori care se potrivesc.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Niciun subiect nu este marcat ca rezolvat.",
   "No topics match your current filter.": "Nu sunt subiecte care să se potrivească filtrul curent.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Fără abonamente la grupuri de utilizatori.",
   "No user groups": "",
   "No user to subscribe.": "Nici un utilizator de abonat.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Fără",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Ține minte că toți boții menținuți de tine vor fi dezactivați.",
   "Note that organizations are limited to five exports per week.": "Nota: Administratorii sunt limitați la cinci exporturil pe săptămână.",
   "Nothing to preview": "Nimic de previzualizat",
@@ -932,6 +940,7 @@
   "Other permissions": "Alte permisiuni",
   "Other settings": "Alte setări",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Afară, bolnav",
   "Outgoing webhook message format": "Formatul mesajelor trimise webhook",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Solicită subiecte la mesajele din hub",
   "Research": "Cercetare",
   "Resend": "Retrimite",
-  "Resend invitation": "Retrimite invitatia",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Retrimiterea a întâmpinat o eroare. Te rog reîncarcă și mai încearcă odată.",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Restaurează schița",
   "Restrict email domains of new users?": "Limitează domeniile de email la utilizatorii noi?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Caută în conținutul subiectului sau al mesajului.",
   "Search people": "Caută persoane",
   "Search results": "Rezultatele căutării",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Vezi cum se configurează emailul.",
   "Select a stream": "Selectează un hub",
   "Select a stream below or change topic name.": "Selectează un flux de mai jos sau schimbă numele subiectului.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Arată numărul mesajelor cu stea",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Arată/schimbă cheia ta API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Înscriere",
   "Silent mentions do not trigger notifications.": "Mențiunile silențioase nu declanșează notificări.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Descrierea acestui hub nu poate conține caractere newline.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Parolele lor vor fi șterse din sistemele noastre, orice boți menținuți vor fi dezactivați.",
   "Theme": "Temă",
+  "There are no bots.": "",
   "There are no current alert words.": "Nu există cuvinte de alertă curente.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Joi",
   "Time": "Ora",
   "Time format": "Formatul orei",
@@ -1240,6 +1259,7 @@
   "Today": "Azi",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Comutare abonament",
   "Toggle the gear menu": "Comută meniul rotiță",
   "Toggle topic mute": "Comută subiectul - fără alertă sonoră",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip trebuie să trimită e-mailuri pentru a confirma adresele utilizatorilor și pentru a trimite notificări.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip are nevoie de permisiunea ta activați notificările desktop.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Traducerile lui Zulip sunt contribuite de comunitatea noastră uimitoare de traducători voluntari. Dacă doriți să ajutați, vedeți Ghid de traducere Zulip .",
@@ -1541,6 +1561,9 @@
   "more topics": "mai multe subiecte",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} few {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} few {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} few {} other {}}",
diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po
index 77ad9c20ba..8ca0044295 100644
--- a/locale/ru/LC_MESSAGES/django.po
+++ b/locale/ru/LC_MESSAGES/django.po
@@ -4,6 +4,7 @@
 # 
 # Translators:
 # Alex Morozov , 2016-2017
+# Alex Vandiver , 2024
 # Alya Abbott , 2022
 # Andrew Zhuravchak , 2018
 # Roman Bannack , 2020
@@ -25,9 +26,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: Lev Shereshevsky, 2022-2023\n"
+"Last-Translator: Alex Vandiver , 2024\n"
 "Language-Team: Russian (http://app.transifex.com/zulip/zulip/language/ru/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -35,57 +36,51 @@ msgstr ""
 "Language: ru\n"
 "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Не разрешено для гостевых пользователей"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Недопустимая организация"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Открытые каналы"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Закрытые каналы"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Личные сообщения"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Группировать личные сообщения"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Отсутствует канал для графика: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Неизвестное название графика: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Начальное время больше конечного. Начало: {start}, конец: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Данные аналитики недоступны. Обратитесь к администратору сервера."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Неверные параметры"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -94,7 +89,7 @@ msgid ""
 "users to join."
 msgstr "В вашей организации не осталось лицензий Zulip, и она больше не может принимать новых пользователей. Пожалуйста, [увеличьте количество лицензий] ({billing_page_link}) или [отключите неактивных пользователей] ({deactivate_user_help_page_link}), чтобы разрешить присоединиться новым пользователям. "
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -103,7 +98,7 @@ msgid ""
 "join."
 msgstr "В вашей организации осталась только одна лицензия Zulip. Вы можете [увеличить количество лицензий] ({billing_page_link}) или [отключить неактивных пользователей] ({deactivate_user_help_page_link}), чтобы разрешить присоединиться более чем одному пользователю. "
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -112,7 +107,7 @@ msgid ""
 "join."
 msgstr "В вашей организации остались только две лицензии Zulip. Вы можете [увеличить количество лицензий] ({billing_page_link}) или [отключить неактивных пользователей] ({deactivate_user_help_page_link}), чтобы разрешить присоединиться более чем двум пользователям. "
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -121,7 +116,7 @@ msgid ""
 "join."
 msgstr "В вашей организации остались только три лицензии Zulip. Вы можете [увеличить количество лицензий] ({billing_page_link}) или [отключить неактивных пользователей] ({deactivate_user_help_page_link}), чтобы разрешить присоединиться более чем трем пользователям. "
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -130,11 +125,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Новому участнику ({email}) не удалось присоединиться к вашей организации, потому что все лицензии Zulip используются. Пожалуйста, [увеличьте количество лицензий] ({billing_page_link}) или [отключите неактивных пользователей] ({deactivate_user_help_page_link}), чтобы присоединить новых участников. "
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Все лицензии Zulip для этой организации уже используются."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -150,124 +145,124 @@ msgstr "Регистрация отключена"
 msgid "Invalid remote server."
 msgstr "Неверный удаленный сервер."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Вам необходимо приобрести лицензии для всех активных пользователей вашей организации (минимум {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Счета на более чем {max_licenses} лицензий не могут быть обработаны на этой странице. Для завершения апгрейда, пожалуйста, свяжитесь с {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Не указан способ оплаты."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} заканчивается через {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Неизвестный способ оплаты. Пожалуйста, свяжитесь с {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Что-то пошло не так. Пожалуйста, обратитесь к {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Что-то пошло не так. Пожалуйста, перезагрузите страницу."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Что-то пошло не так. Пожалуйста, подождите несколько секунд и попробуйте еще раз."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Пожалуйста, укажите данные платежной карты перед началом бесплатного пробного использования."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "Пожалуйста, укажите данные платежной карты для планирования обновления."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Невозможно обновить тариф. Тарифный план истек и заменен новым. "
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Невозможно обновить тариф. Тарифный план закончился."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr "Не удается обновить лицензии в текущем расчетном периоде для бесплатного пробного тарифа."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Невозможно обновить лицензии вручную. На вашем тарифе лицензия управляется автоматически."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Ваш тариф уже включает {licenses} лицензий в текущем расчетном периоде. "
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Вы не можете уменьшить количество лицензий в текущем расчетном периоде. "
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr "Не удается изменить лицензии для следующего платежного периода для тарифа, уровень которого будет понижен."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Ваш тариф уже запланирован к продлению на {licenses_at_next_renewal} лицензий."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Ничего не изменилось."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "У этой организации нет клиентов!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Сеанс не найден"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Нужно быть администратором, выставляющим счета, либо владельцем организации"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Назначение платежа не найдено"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Передайте stripe_session_id или stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -275,54 +270,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Запрос вашей организации на спонсируемый хостинг одобрен!  Вы были переведены на {plan_name} бесплатно. {emoji}\n\nЕсли вы сможете {begin_link}указать Zulip в качестве спонсора на своем веб-сайте{end_link}, мы будем вам очень признательны!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
-msgstr ""
+msgstr "Параметр 'подтверждено' обязателен"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "Срок действия токена платежного доступа истек."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Недействительный токен платежного доступа."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr "Не удалось перенести клиента с сервера в облако. Пожалуйста, свяжитесь с поддержкой для получения помощи."
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr "Учетная запись пользователя еще не создана."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "Чтобы продолжить, вы должны принять Условия использования."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr "Этот zulip_org_id не зарегистрирован в системе управления платежами Zulip."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr "Неверный zulip_org_key для данного zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "Регистрация вашего сервера отозвана."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Неверные параметры"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Ошибка"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Метод не разрешен (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Страница не найдена (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -331,8 +333,41 @@ msgid ""
 "                        "
 msgstr "\n                       Если эта ошибка непредвиденная, вы можете\n                        связаться с поддержкой.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Метод не разрешен (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Внутренняя ошибка сервера"
 
@@ -437,7 +472,7 @@ msgstr "15-дневная активность"
 msgid "Total users"
 msgstr "Всего пользователей"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Пользователи"
 
@@ -577,37 +612,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Убедитесь, что вы правильно скопировали ссылку в браузер. Если вы и далее будете попадать на эту страницу, то, скорее всего, это наша ошибка. Извините."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Платежи"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Закрыть модальное окно"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Не имеет значения"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Даунгрейд"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Отмена"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr "Даунгрейд"
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Подтвердить"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Не имеет значения"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr "Отменить апгрейд"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Состояние оплаты"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Отключить регистрацию сервера?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr "Управление тарифом недоступно"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr " Управление тарифом недоступно для этой\n                        организации, потому что ваш сервер Zulip уже на\n                        тарифе %(server_plan_name)s, покрывающем все\n                        организации этого сервера. Следуйте\n                       инструкциям по входу для\n                        всех предыдущих версий\n                        Zulip, чтобы управлять тарифом.\n                        "
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr " Для переноса тарифа с сервера в эту\n                        организацию и по другим вопросам свяжитесь с поддержкой.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr "\n                        Управление тарифом для этого сервера недоступно, т.к. как минимум у одной\n                        организации на этом сервере уже есть активный тариф.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr "\n                        Вы также можете войти в систему управления тарифом\n                        организации, или обратиться в поддержку с любыми вопросами.\n                        "
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Превышено ограничение частоты"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Превышено ограничение частоты."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Вы можете попробовать снова через %(retry_after)s секунд."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Апгрейд"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Преобразуйте демонстрационную организацию перед обновлением."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -628,6 +759,451 @@ msgstr "Категории"
 msgid "All"
 msgstr "Все"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr "Без ограничений"
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr "С поддержкой"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr "Управляется самостоятельно"
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr "Для организаций до 10 пользователей"
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr "Недоступно"
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Сообщество разработки Zulip"
@@ -647,11 +1223,7 @@ msgstr "Присоединиться как самостоятельный хо
 msgid "Join as a contributor"
 msgstr "Присоединиться как участник"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Состояние оплаты"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -666,12 +1238,12 @@ msgstr "Состояние оплаты"
 msgid "Create organization"
 msgstr "Создать организацию"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Тарифы и цены"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -704,51 +1276,48 @@ msgstr "Цены на образование"
 msgid "View pricing"
 msgstr "Показать цены"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip для бизнеса"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Обратиться в службу поддержки"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "От"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Организация"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Тема"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Сообщение"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Отправить"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Спасибо, что связались с нами"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Спасибо, что связались с нами!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Мы скоро свяжемся с вами."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -764,14 +1333,6 @@ msgstr "Аватар"
 msgid "Try Zulip now"
 msgstr "Попробуйте Zulip сейчас"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Апгрейд"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Преобразуйте демонстрационную организацию перед обновлением."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -811,7 +1372,7 @@ msgstr "Адрес эл. почты"
 msgid ""
 "I agree to the Terms of Service."
-msgstr "Я соглашаюсь с условиями исрользования."
+msgstr "Я соглашаюсь с условиями использования."
 
 #: templates/zerver/accounts_accept_terms.html:64
 msgid "Continue"
@@ -819,7 +1380,7 @@ msgstr "Продолжить"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Зарегистрироваться"
 
@@ -852,8 +1413,8 @@ msgstr "Уже есть учетная запись?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Войти"
 
@@ -886,26 +1447,22 @@ msgstr "Если это сообщение не пропадает, попроб
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Сбой загрузки Zulip. Попробуйте перезагрузить страницу."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Невозможно подключится к Zulip."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Обновления могут задержаться."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Скоро попробуем снова..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Обновить сейчас."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Сообщения"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Ошибка аутентификации поддомена"
@@ -1128,21 +1685,21 @@ msgstr "Гостевые пользователи"
 msgid "Normal users"
 msgstr "Обычные пользователи"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "Пересылать сообщения на адрес электронной почты"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Закрыть"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Обновить"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2319,23 +2876,23 @@ msgid ""
 "\n"
 "    Click the button below to confirm your email and log in to Zulip plan management for %(remote_realm_host)s.\n"
 "    "
-msgstr ""
+msgstr "\n    Нажмите кнопку ниже для подтверждения адреса почты и входа в систему управления тарифом Zulip для %(remote_realm_host)s.\n    "
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.html:14
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:4
 msgid "Confirm and log in"
-msgstr ""
+msgstr "Подтвердить и войти"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.subject.txt:1
 msgid "Confirm email for Zulip plan management"
-msgstr ""
+msgstr "Подтвердите адрес почты для управления тарифом Zulip"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:1
 #, python-format
 msgid ""
 "Click the link below to confirm your email and log in to Zulip plan "
 "management for %(remote_realm_host)s."
-msgstr ""
+msgstr "Нажмите на ссылку ниже для подтверждения адреса почты и входа в систему управления тарифом Zulip для %(remote_realm_host)s."
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.html:9
 #, python-format
@@ -2365,7 +2922,7 @@ msgstr "Ваш запрос на спонсорство Zulip одобрен! В
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr "Если вы сможете упомянуть спонсорство Zulip на вашем веб-сайте, мы будем очень признательны!"
 
 #: templates/zerver/find_account.html:4
@@ -2385,7 +2942,16 @@ msgid ""
 "                    "
 msgstr "\n                    Письма отправлены! \n                    Вы будете получать электронные письма только на адреса\n                    связанные с организациями Zulip. Адреса, введенные\n                    на предыдущей странице, перечислены ниже:\n                    "
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2395,12 +2961,12 @@ msgid ""
 "                    "
 msgstr "\n                    Введите ваш адрес электронной почты чтобы получить письмо с адресами\n                    всех организаций Zulip Cloud в которых у вас есть\n                    активные учетные записи. Если вы забыли ваш пароль,\n                    вы можете сбросить его.\n                    "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Адрес электронной почты"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Найти учетные записи"
 
@@ -2432,7 +2998,7 @@ msgstr "Интеграции"
 msgid "Desktop & mobile apps"
 msgstr "Приложения для компьютера и смартфонов"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Новая организация"
 
@@ -2800,13 +3366,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr "Пожалуйста, свяжитесь с человеком, который вас пригласил, и попросите его увеличить количество лицензий, а затем повторите попытку."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Превышено ограничение частоты"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Превышено ограничение частоты."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2814,11 +3376,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "Вы превысили предел частоты \n                        выполнения этого действия."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Вы можете попробовать снова через %(retry_after)s секунд."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2987,6 +3544,22 @@ msgstr "В чем вы заинтересованы?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Подписаться на новости Zulip с низким трафиком (несколько писем в год) "
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr "Неожиданная регистрация сервера Zulip"
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr "\n                        Ваша организация привязана к \n                        другому серверу Zulip.\n\n                        Свяжитесь с поддержкой Zulip\n                        для помощи в решении этой проблемы.\n                        "
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Сбросить пароль"
@@ -3144,123 +3717,107 @@ msgid ""
 "                        "
 msgstr "\n                        Вы также можете\n                        использовать приложение\n                        Zulip для компьютера.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr "Неожиданная регистрация сервера Zulip"
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr "\n                        Ваша организация привязана к \n                        другому серверу Zulip.\n\n                        Свяжитесь с поддержкой Zulip\n                        для помощи в решении этой проблемы.\n                        "
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "регистрации"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} только что зарегистрировался в Zulip. (всего: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} принял ваше приглашение присоединиться к Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr "Нельзя активировать демонстрационную учетную запись, предложите пользователю зарегистрироваться."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Неверное размещение заказа."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Поле с ID {id} не найдено."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "Неверное название группы каналов по умолчанию '{group_name}'"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr "Слишком длинное название группы каналов по умолчанию (предел: {max_length} символов)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr "Название группы каналов по умолчанию '{group_name}' содержит символы NULL (0x00)."
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr "Неверная группа каналов по умолчанию {group_name}"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' - это канал по умолчанию, он не может быть добавлен к '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Группа каналов по умолчанию '{group_name}' уже существует"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Канал '{stream_name}' уже включен в группу каналов по умолчанию '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Канал '{stream_name}' не включен в группу каналов по умолчанию '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr "Эта группа каналов по умолчанию уже названа '{group_name}'"
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Для защиты пользователей, Zulip ограничивает количество приглашений, которые вы можете отправить в день. Вы исчерпали ваш лимит, поэтому приглашения не были отправлены."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Ваша учетная запись слишком новая для отправки приглашений для этой организации. Попросите администратора организации или более опытного пользователя."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Некоторые адреса электронной почты не прошли проверку, поэтому мы не выслали ни одного приглашения."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Мы не смогли никого пригласить."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3290,72 +3847,72 @@ msgstr "Нельзя изменить содержание сообщения, 
 msgid "Widgets cannot be edited."
 msgstr "Виджеты нельзя редактировать."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "В вашей организации выключено редактирование сообщений"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "У вас нет прав для редактирования этого сообщения"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Разрешенное время редактирования сообщения истекло"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} пометил эту тему как решенную."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} пометил эту тему как не решенную."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Настоящая тема была перемещена в {new_location} пользователем {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Сообщение из настоящей темы было перемещено в {new_location} пользователем {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} сообщений было перемещено из настоящей темы в {new_location} пользователем {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Эта тема была перемещена сюда из {old_location} пользователем {user}"
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr "[Сообщение]({message_link}) было перемещено сюда из {old_location} пользователем {user}."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} сообщений было перемещено сюда из {old_location} пользователем {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "В вашей организации выключено редактирование сообщений"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "У вас нет прав для редактирования этого сообщения"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Разрешенное время редактирования сообщения истекло"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr "Разрешенное время редактирования темы сообщения истекло."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "У вас нет полномочий перемещать данное сообщение."
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Разрешенное время редактирования канала этого сообщения истекло"
 
@@ -3374,137 +3931,142 @@ msgstr "Флаг нередактируемый: '{flag}'"
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "Неверное действие над флагом сообщения: '{operation}'"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Неверное сообщение(я)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Невозможно отобразить сообщение"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Ожидал ровно один канал"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Неверный тип данных для канала"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Неверный тип данных для получателей"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "В списках получателей могут быть адреса электронной почты или ID пользователей, но не то и другое."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Ваш бот {bot_identity} попытался послать сообщение в канал с ID {stream_id}, но канала с таким ID не существует."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Ваш бот {bot_identity} попытался послать сообщение в канал {stream_name}, но такого канала не существует. Нажмите [здесь]({new_stream_link}), чтобы его создать."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Ваш бот {bot_identity} попытался послать сообщение в канал {stream_name}. Канал существует, но на него никто не подписан."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Личные сообщения в этой организации отключены."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr "У вас нет права доступа к некоторым получателям."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Темы необходимы в этой организации"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Виджеты: программист API послал неверное JSON-содержание"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Виджеты: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Пользовательский эмодзи с таким именем уже существует."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr "В упорядоченном списке не должно быть повторяющихся шаблонов ссылок"
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr "Упорядоченный список должен включать все имеющиеся шаблоны ссылок ровно по одному разу"
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Запланированное сообщение уже отправлено"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "Запланированное время доставки должно быть в будущем."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Сообщение не может быть отправлено в запланированное время."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Сообщение, которое вы запланировали на {delivery_datetime}, не было отправлено из-за следующей ошибки:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr "[Показать запланированные сообщения](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Канал уже отключен"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Канал сейчас не отключен"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Канал с названием {stream_name} уже есть"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr "Канал {stream_name} возвращен из архива."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} изменил [права доступа](/help/stream-permissions) для настоящего канала с **{old_policy}** на **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3513,38 +4075,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} изменил [права на запись сообщений](/help/stream-sending-policy) в настоящем канале:\n\n* **Прежние права**: {old_policy}.\n* **Новые права**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} переименовал канал {old_stream_name} в {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Нет описания."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} изменил описание этого канала."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Старое описание"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Новое описание"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Навсегда"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Сообщения в настоящем канале отныне сохраняются навсегда."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3558,7 +4120,7 @@ msgstr "{user} изменил [срок хранения сообщений](/he
 msgid "You cannot attach a submessage to this message."
 msgstr "Вы не можете прикрепить вложенное сообщение к этому сообщению."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr "Неверный ID пользователя {user_id}"
@@ -3568,187 +4130,187 @@ msgstr "Неверный ID пользователя {user_id}"
 msgid "User group '{group_name}' already exists."
 msgstr "Группа пользователей '{group_name}' уже существует."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Этот API не доступен для входящих вебхук ботов."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Учетная запись не связана с этим поддоменом"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Конечная точка не принимает запросы бота."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Должен быть администратором сервера"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Недостаточно прав"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Конечная точка требует базовую HTTP аутентификацию."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Неверный заголовок для Basic-авторизации"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Отсутствует заголовок авторизации для Basic-авторизации"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Вебхук-ботам доступны только вебхуки"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Ваша учетная запись {username} была отключена. Пожалуйста, свяжитесь с администратором вашей организации чтобы снова её активировать."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Пароль слишком простой."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Длина поддомена должна быть 3 символа или больше."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Поддомен не должен начинаться с или заканчиваться на '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Название поддомена должно содержать только латинские строчные буквы, цифры и знаки '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Поддомен уже используется. Пожалуйста, выберите другой."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Поддомен зарезервирован. Пожалуйста, выберите другой."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Пожалуйста, используйте реальный адрес электронной почты."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Организация, к которой вы пытаетесь подключиться с использованием {email}, не существует."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Запросите приглашение для {email} у администратора организации."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Ваш адрес электронной почты {email} не находится в одном из доменов, которым разрешено регистрироваться в этой организации."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Адреса электронной почты, содержащие, знак '+', не разрешены в этой организации."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Новые участники не могут присоединиться к этой организации, потому что все лицензии Zulip используются. Свяжитесь с человеком, который вас пригласил, и попросите его увеличить количество лицензий, а затем повторите попытку."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Новый пароль"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Подтвердить новый пароль"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr "Вы совершаете слишком много попыток входа. Попробуйте еще раз через {seconds} секунд, или обратитесь за помощью к администратору вашей организации."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Ваш пароль был отключен, т.к. он слишком слабый. Сбросьте пароль, чтобы создать новый."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Токен"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr "Совет: Вы можете ввести несколько адресов электронной почты, разделяя их запятыми."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Введите не более 10 адресов электронной почты."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Мы не можем найти такую организацию Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Неверный адрес электронной почты '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Не заполнена тема"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Нельзя отправить сообщение в несколько каналов"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Канал отсутствует"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "У сообщения должны быть получатели"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Неверный тип сообщения"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Недопустимое вложение"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "При удалении вложения произошла ошибка. Пожалуйста, повторите попытку позже."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "У сообщения должен быть получатель!"
 
@@ -3805,88 +4367,88 @@ msgstr "Пользователь отключил синхронизацию ч
 msgid "Draft does not exist"
 msgstr "Черновик не существует"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Открыть Zulip, чтобы посмотреть содержание спойлера"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr "оповещения {service_name}"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Неверный адрес."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Не принадлежит вашему домену."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Адреса электронной почты, содержащие знак '+', не разрешены."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Зарезервировано для системных ботов."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "У {email} уже есть учетная запись"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Уже имеет учетную запись."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Учетная запись отключена."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "Эмодзи '{emoji_name}' не существует"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Неверный пользовательский эмодзи."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Неверное имя пользовательского эмодзи."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Этот пользовательский эмодзи отключен."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Неверный код эмодзи."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Неверное имя эмодзи."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Неверный тип эмодзи."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Должен быть администратором организации или автором эмодзи"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Название эмодзи должно заканчиваться на букву или цифру."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Название эмодзи должно содержать только строчные латинские буквы, цифры, пробелы, тире или подчерки."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Отсутствует название эмодзи."
 
@@ -3894,119 +4456,119 @@ msgstr "Отсутствует название эмодзи."
 msgid "Could not allocate event queue"
 msgstr "Не удается выделить очередь событий"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Не авторизован: требуется аутентификация через API или пользовательский сеанс"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Канал '{stream}' не существует"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Канал с ID '{stream_id}' не существует"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "владелец организации"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "пользователь"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Нельзя отключить единственного {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Неверный оператор включения разметки Markdown: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Частота использования API превысила ограничение."
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Неверный JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Должен быть членом организации"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Должны быть администратором организации"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Должен быть владельцем организации"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Неправильное имя пользователя или пароль"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Учётная запись отключена"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Эта организация отключена"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Регистрация сервиса мобильных push-оповещений вашего сервера была отключена."
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Парольная аутентификация отключена в этой организации"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Ваш пароль отключен, его необходимо сбросить "
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Неверный API-ключ"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "неверно оформленный API-ключ"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr "Событие '{event_type}' в настоящее время не поддерживается вебхуком {webhook_name}; игнорируем"
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Не удалось выделить данные из запроса: данное событие сгенерировано {webhook_name}?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Пользователь не аутентифицирован"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Неверный поддомен."
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Доступ запрещен"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4014,47 +4576,47 @@ msgid ""
 "messages in this topic."
 msgstr "У вас есть право переместить только {total_messages_allowed_to_move}/{total_messages_in_topic} самых последних сообщений в этой теме."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Реакция уже существует."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Реакция не существует."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr "Ваша организация привязана к другому серверу Zulip. Пожалуйста, свяжитесь с поддержкой Zulip для помощи в решении этой проблемы."
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr "Организация не зарегистрирована"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr "У вас нет права использовать подстановочные упоминания  канала в этом канале."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr "У вас нет права использовать подстановочные упоминания  темы в этой теме."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Имя пользователя Twitter"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "Имя пользователя GitHub"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Своя внешняя учетная запись должна определять шаблон URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Неверный тип внешней учетной записи"
 
@@ -4152,106 +4714,106 @@ msgstr "Продуктивность"
 msgid "Version control"
 msgstr "Контроль версий"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Сообщение не должно быть пустым"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Сообщение не должно содержать нулевые байты"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr "Вам не разрешено упоминать группу пользователей '{user_group_name}'. Вы должны состоять в '{can_mention_group_name}', чтобы иметь такую возможность."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr "Оператор {operator} не поддерживается."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Неверные уточняющий оператор: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Отсутствует параметр 'anchor'."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Неверный якорь"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr "Если вы новичок в Zulip, посмотрите наше [руководство по использованию Zulip для занятий]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Если вы новичок в Zulip, посмотрите наше [руководство по началу работы]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr "У нас также есть руководство по [настройке Zulip для занятий]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr "У нас также есть руководство для [настройки вашей организации]({organization_setup_url})."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr "Обратите внимание, что это [демо-организация]({demo_organization_help_url}) и она будет **автоматически удалена** через 30 дней."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Привет, добро пожаловать в Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Это личное сообщение от меня, приветственного бота."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Я также могу помочь вам начать! Просто нажмите на любое место в этом сообщении или нажмите `r`, чтобы ответить."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Вот несколько сообщений, которые я понимаю:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr "Вы можете [скачать](/apps/) [мобильные и настольные приложения](/apps/). Zulip так же отлично работает в браузере."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Перейдите в [настройки профиля](#settings/profile) чтобы добавить [изображение профиля](/help/change-your-profile-picture) и отредактировать вашу [информацию профиля](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4260,119 +4822,119 @@ msgid ""
 "experience."
 msgstr "Перейдите в [Предпочтения](#settings/preferences), чтобы [выбрать светлую или темную тему оформления](/help/dark-theme), [указать предпочитаемый набор эмодзи](/help/emoji-and-emoticons#change-your-emoji-set), [сменить язык интерфейса](/help/change-your-language) и сделать другие персональные настройки Zulip."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "В Zulip каналы [определяют, кто получит сообщение] (/help/streams-and-topics). Они похожи на каналы в других приложениях для общения."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Просмотреть и подписаться на каналы](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "В Zulip темы [говорят вам, о чем сообщение] (/help/streams-and-topics). Это легковеснные описатели, очень похожие по сути на строку темы электронного письма."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Проверьте [Последние беседы](#recent), чтобы узнать, что происходит! Вы можете вернуться к этой беседе, нажав \"Личные сообщения\" в левом верхнем углу."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
-msgstr "[Клавиатурные комбинации] Zulip (#keyboard-shortcuts) позволяют быстро и эффективно перемещаться по приложению."
+msgstr "[Сочетания клавиш] Zulip (#keyboard-shortcuts) позволяют быстро и эффективно перемещаться по приложению."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
-msgstr "Нажмите `?` в любое время, чтобы посмотреть [подсказку] (#keyboard-shortcuts)."
+msgstr "Нажмите `?`, чтобы посмотреть [шпаргалку] (#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
-msgstr "Zulip использует [Markdown](/help/format-your-message-using-markdown), интуитивно понятное форматирование для **жирного**, *курсива*, списков и многого другого. Нажмите [здесь](#message-formatting) для получения подсказки."
+msgstr "Zulip использует [Markdown](/help/format-your-message-using-markdown), интуитивно понятное форматирование для **жирного**, *курсива*, списков и многого другого. Получите шпаргалку [тут](#message-formatting)."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Просмотрите наши [советы по обмену сообщениями](/help/messaging-tips), чтобы узнать о реакциях эмодзи, блоках кода и многом другом!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Посмотрите наше [Руководство по началу работы](/help/getting-started-with-zulip) или просмотрите [Центр помощи](/help/), чтобы узнать больше!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Извините, я не понял ваше сообщение. Пожалуйста, попробуйте одну из следующих команд:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Это закрытый канал, это видно по символу замочка рядом с названием канала."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Закрытые каналы видны только членам такого канала."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Чтобы управлять этим каналом, зайдите в [настройки канала]({stream_settings_url}) и выберите `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Это сообщение в канале #**{default_notification_stream_name}** на тему `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Темы - простой инструмент для того, чтобы поддерживать общение организованным."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Вы можете узнать подробнее о темах в разделе [Каналы и темы] ({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Это сообщение в канале #**{default_notification_stream_name}** на тему `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr "[Начинайте новую тему]({start_topic_help_url}) всегда, когда вы не отвечаете на предыдущее сообщение."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Неверный JSON в ответе"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Неверный формат ответа"
 
@@ -4386,45 +4948,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "Неверные параметры GCM для отражателя: {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Токен не существует"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "В этой организации отключено включение содержимого сообщений в мобильные push-оповещения. "
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} упомянул @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} упомянул вас:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} упомянул всех:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Проверить оповещение"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr "Это пробное оповещение от {realm_name} ({realm_uri})."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Устройство не опознано"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr "Устройство не опознано отражателем push-уведомлений"
 
@@ -4436,23 +4998,23 @@ msgstr "Неверный тип данных для идентификатора
 msgid "Recipient list may only contain user IDs"
 msgstr "Список получателей может содержать только идентификаторы пользователей."
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "У пользователя нет полномочий для такого запроса"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' больше не использует Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "Вы не можете отправлять личные сообщения за пределы своей организации."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr "Ошибка отражателя push-уведомлений: {error}"
@@ -4472,21 +5034,21 @@ msgstr "Отсутствует параметр '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Неверное значение для '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Неверные данные"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "Параметр \"{name}\" не является корректным JSON."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Запланированное сообщение не существует"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr "безопасность аккаунта {service_name} "
@@ -4523,7 +5085,7 @@ msgstr "Пожалуйста, выберите: 'stream' или 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Неверный код канала"
 
@@ -4537,7 +5099,7 @@ msgstr "Название канала '{stream_name}' уже занято."
 msgid "Invalid stream name '{stream_name}'"
 msgstr "Неверное название канала '{stream_name}'"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr "Канал по умолчанию не может быть закрытым."
 
@@ -4546,7 +5108,7 @@ msgstr "Канал по умолчанию не может быть закрыт
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr "Канала(ов) ({stream_names}) нет"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Открытые веб-каналы не активированы."
 
@@ -4578,28 +5140,28 @@ msgstr "Тема не может быть пустой"
 msgid "Invalid character in topic, at position {position}!"
 msgstr "Недопустимый символ в теме на месте {position}!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Данные подписчика недоступны для этого канала"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Невозможно получить подписчиков закрытого канала"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} не является булевым типом"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} не является датой"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} не является словарем"
@@ -4610,18 +5172,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr "Неожиданный параметр \"{argument}\" в {var_name}"
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} не является числом с плавающей запятой"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} слишком маленькая"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} не является целочисленной"
@@ -4631,24 +5193,24 @@ msgstr "{var_name} не является целочисленной"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} не является корректным JSON"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} слишком большая"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} не является списком"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Недопустимая {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} слишком длинная (предел: {max_length} символов)"
@@ -4658,8 +5220,8 @@ msgstr "{var_name} слишком длинная (предел: {max_length} с
 msgid "{var_name} is too short."
 msgstr "{var_name} слишком короткая."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} не является строкой"
@@ -4678,21 +5240,21 @@ msgstr "Неверное {var_name}: {msg}"
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Загрузка превысит квоту вашей организации."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Невозможно декодировать изображение; вы на самом деле загрузили файл изображения?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Размер изображения превышает ограничения."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Поврежденная анимированная картинка."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Неизвестный формат анимированного изображения."
 
@@ -4749,161 +5311,161 @@ msgstr "Имя группы пользователей не может быть
 msgid "User group name cannot start with '{prefix}'."
 msgstr "Имя группы пользователей не может начинаться с '{prefix}'."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Слишком длинное имя!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Имя слишком короткое"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Неверные символы в имени!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Неверный формат!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Имя уже занято!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Неверное имя или имя пользователя"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr "Неверная интеграция '{integration_name}'."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr "Отсутствуют параметры настройки: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr "Для {key} неверное значение {value} ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Неверные данные конфигурации!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Неверный тип бота"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Неверный тип интерфейса"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr "Неверный ID пользователя: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Нет такого бота"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Нет такого пользователя"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Пользователь отключен"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} не может быть пустым."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "У {var_name} неверная длина {length}; должна быть {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} не определяется в качестве часового пояса"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} не является корректным шестнадцатеричным кодом цвета"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} должен содержать ровно {length} элементов"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "ключ {key_name} отсутствует в {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr "Неожиданные параметры: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} не является allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} неверно)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} не является URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "Шаблон URL должен содержать '%(username)s'."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' не может быть пустым."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Поле не должно содержать одинаковые варианты."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' не является допустимым выбором для '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} не является списком строк или целых чисел"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} не является строкой или цельным числом"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} не имеет длины"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} отсутствует"
@@ -4937,215 +5499,211 @@ msgstr "Ошибка CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr "Неправильная настройка обратного прокси-сервера: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "События канала"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Доступно в тарифе Zulip Cloud Standard. Выполните апгрейд, чтобы получить доступ."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr "Доступно в тарифе Zulip Cloud Plus. Повысьте тариф для доступа."
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "Интеграция с GIPHY отключена"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr "Разрешить GIF-файлы с рейтингом Y (очень молодая аудитория)"
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr "Разрешить GIF-файлы с рейтингом G (широкая аудитория)"
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr "Разрешить GIF-файлы с рейтингом PG (родительский контроль)"
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr "Разрешить GIF-файлы с рейтингом PG-13 (родительский контроль — до 13 лет)"
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr "Разрешить GIF-файлы с рейтингом R (ограниченное)"
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Неверные символы в имени эмодзи"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr "Неверное регулярное выражение: {regex}"
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Неизвестная ошибка регулярного выражения"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr "Неверный шаблон URL-адреса"
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr "Группа %(name)r в шаблоне URL отсутствует в шаблоне преобразования ссылок."
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr "Группа %(name)r в шаблоне преобразования ссылок отсутствует  в шаблоне URL."
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Неверные символы в языке pygments"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr "Отсутствует обязательная переменная \"code\" в шаблоне URL"
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr "Переменная \"code\" должна быть единственной в шаблоне URL"
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Администраторы, модераторы, участники и гости"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Администраторы, модераторы и участники"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Администраторы и модераторы"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Только администраторы"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Никто"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Неизвестный пользователь"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Владелец организации"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Администратор организации"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Модератор"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Участник"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Гость"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Открыто в сети"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Открытый"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Закрытый, открытая история переписки"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Закрытый, защищенная история переписки"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Открытый, защищенная история переписки"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Все участники канала могут оставлять сообщения"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Только администраторы организации имеют право писать"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Только администраторы организации и модераторы могут публиковать сообщения"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Только полноценные члены организации могут писать"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Юникод эмодзи"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Дополнительные эмодзи"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Дополнительные эмодзи Zulip"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr "Пользователь с ID {user_id} отключен"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr "Пользователь с ID {user_id} является ботом"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Список вариантов"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Выбор человека"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Короткий текст"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Длинный текст"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Дата"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Выбор даты"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Ссылка"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Внешняя учетная запись"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Местоимения"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Неверное регулярное выражение: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Неизвестная ошибка регулярного выражения"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Неверный шаблон URL-адреса"
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "Группа %(name)r в шаблоне URL отсутствует в шаблоне преобразования ссылок."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Группа %(name)r в шаблоне преобразования ссылок отсутствует  в шаблоне URL."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Юникод эмодзи"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Дополнительные эмодзи"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Дополнительные эмодзи Zulip"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Неверные символы в имени эмодзи"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Неверные символы в языке pygments"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "Отсутствует обязательная переменная \"code\" в шаблоне URL"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "Переменная \"code\" должна быть единственной в шаблоне URL"
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "События канала"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Доступно в тарифе Zulip Cloud Standard. Выполните апгрейд, чтобы получить доступ."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "Доступно в тарифе Zulip Cloud Plus. Повысьте тариф для доступа."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "Интеграция с GIPHY отключена"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Разрешить GIF-файлы с рейтингом Y (очень молодая аудитория)"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "Разрешить GIF-файлы с рейтингом G (широкая аудитория)"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "Разрешить GIF-файлы с рейтингом PG (родительский контроль)"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "Разрешить GIF-файлы с рейтингом PG-13 (родительский контроль — до 13 лет)"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "Разрешить GIF-файлы с рейтингом R (ограниченное)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Открыто в сети"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Открытый"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Закрытый, открытая история переписки"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Закрытый, защищенная история переписки"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Открытый, защищенная история переписки"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Все участники канала могут оставлять сообщения"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Только администраторы организации имеют право писать"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Только администраторы организации и модераторы могут публиковать сообщения"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Только полноценные члены организации могут писать"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Администраторы, модераторы, участники и гости"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Администраторы, модераторы и участники"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Администраторы и модераторы"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Только администраторы"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Никто"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Неизвестный пользователь"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Владелец организации"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Администратор организации"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Модератор"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Участник"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Гость"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Неизвестный IP адрес"
@@ -5158,20 +5716,20 @@ msgstr "неизвестная операционная система"
 msgid "An unknown browser"
 msgstr "Неизвестный браузер"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Отсутствует параметр 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Отсутствует параметр 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Более новое событие чем {event_id} уже было удалено!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "События {event_id} не было в этой очереди"
@@ -5209,41 +5767,41 @@ msgstr "Неверный пароль."
 msgid "User-Agent header missing from request"
 msgstr "В запросе отсутствует параметр User-Agent"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Метка не может быть пустой."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Поле должно содержать хотя бы один пункт."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Тип поля не поддерживается для отображения в сводке профиля."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Неверный тип поля."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "В сводке профиля могут отображаться только 2 дополнительных поля профиля."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Поле с такой меткой уже существует."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Дополнительное поле по умолчанию не может быть обновлено."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Эта конечная точка недоступна в производственном режиме."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend не включен."
 
@@ -5294,7 +5852,7 @@ msgstr "Укажите хотя бы один адрес электронной
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr "Канал с id: {stream_id} отсутствует. Приглашения не были отправлены."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr "У вас нет разрешения подписывать других пользователей на каналы."
 
@@ -5343,19 +5901,19 @@ msgstr "Якорь можно исключить только в конце ди
 msgid "No such topic '{topic}'"
 msgstr "Нет такой темы '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Не указан отправитель"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Зеркалирование не разрешено с ID пользователя получателей"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Неверное зеркалированное сообщение"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "В этой организации зеркалирование Zephyr не разрешено"
 
@@ -5371,42 +5929,46 @@ msgstr "Пользователь уже заглушен"
 msgid "User is not muted"
 msgstr "Пользователь не заглушен"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Присутствие не поддерживается для пользователей-ботов."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Нет данных о присутствии {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Клиент не послал никаких новых значений"
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Клиент должен передать emoji_name, если он передает emoji_code или reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr "Неверный статус: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr "Неверный app ID"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Пустой или неверной длины токен"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Неверный токен APNS"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr "Отражатель вернул ошибку: {result}"
@@ -5421,55 +5983,55 @@ msgstr "Как минимум один из следующих параметр
 msgid "Read receipts are disabled in this organization."
 msgstr "Уведомления о прочтении в настоящее время отключены в этой организации."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Неверный язык '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Включите хотя бы один способ аутентификации"
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr "Неверный провайдер видеочатов {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "Неверный giphy_rating {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Должна быть демонстрационная организация."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr "Неверный домен: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Домен {domain} уже является частью вашей организации."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Не найдена запись для домена {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Вы должны загрузить только один файл."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Только администраторы могут переопределять встроенные эмодзи."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr "Размер загруженного файла больше установленного ограничения {max_size} MiB"
@@ -5503,7 +6065,7 @@ msgstr "Экспорт еще продолжается"
 msgid "You must upload exactly one icon."
 msgstr "Вы должны загрузить только одну иконку."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Фильтр URL не найден."
 
@@ -5531,71 +6093,71 @@ msgstr "Неверный формат запроса"
 msgid "Invalid DSN"
 msgstr "Неверный DSN"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Закрытый канал нельзя сделать каналом по умолчанию."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Вы должны передать \"new_description\" или \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Неверное значение для \"op\". Укажите \"add\" или \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Канал уже имеет это имя!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Не указано действие. Укажите хотя бы один 'add' или 'delete'."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} подписал вас на канал {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} подписал вас на следующие каналы:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Не удалось получить доступ к каналу ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Вы можете только приглашать других пользователей Zephyr зеркалирования в закрытые каналы."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} создал следующие каналы: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} создал новый канал {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "новые каналы"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** канал создан пользователем {user_name}. **Описание:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr "Неизвестное свойство подписки: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr "Нет подписки на канал с id {stream_id}"
@@ -5604,7 +6166,7 @@ msgstr "Нет подписки на канал с id {stream_id}"
 msgid "Invalid json for submessage"
 msgstr "Неверный json для субсообщения"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Вы не уполномочены просматривать этот файл.
"
 
@@ -5628,112 +6190,112 @@ msgstr "Пустой список 'to'"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "Пользователь отключил оповещения печати для личных сообщений."
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr "Этот файл отсутствует или был удален.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Неверный токен"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Неверное имя файла"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Выберите файл для загрузки"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "За раз можно загрузить только один файл"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Не указаны новые данные"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr "{user_full_name} добавил вас в группу {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr "{user_full_name} удалил вас из группы {group_name}."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Пользователь {user_id} уже является участником этой группы"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr "В этой группе пользоваталей нет участника '{user_id}'"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Группа пользователей {group_id} уже является подгруппой настоящей группы."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr "Группа пользователей {user_group_id} уже является подгруппой одной из переданных подгрупп."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Группа пользователей {group_id} не является подгруппой настоящей группы."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Изменение аватаров отключено в данной организации."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Изменение адреса электронной почты отключено в этой организации."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Неверный язык по умолчанию default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "Неверный звук оповещения '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr "Неверный период пакетной рассылки: {seconds} с"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Ваш пароль Zulip задается в LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Неверный пароль!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr "Вы сделали слишком много попыток! Попробуйте еще раз через {seconds} с."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Новый пароль слишком слабый!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Вы должны загрузить ровно один аватар."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Тема не заглушена"
 
@@ -5794,43 +6356,43 @@ msgstr "Одноразовые адреса электронной почты н
 msgid "Email '{email}' already in use"
 msgstr "Адрес электронной почты '{email}' уже используется"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Неверный токен доступа Zoom"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Данные доступа к Zoom не настроены"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Неверный идентификатор сеанса Zoom"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Неверные данные доступа к Zoom"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Не удалось создать звонок в Zoom."
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton не настроен."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Неверная подпись"
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Ошибка подключения к серверу BigBlueButton."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Ошибка аутентификации на сервере BigBlueButton."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "Сервер BigBlueButton вернул неожиданную ошибку."
 
@@ -5863,11 +6425,11 @@ msgstr "Недействительные данные"
 msgid "Unknown webhook request"
 msgstr "Неизвестный вебхук-запрос"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Тема не может быть пустой"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Содержимое не может быть пустым"
 
@@ -5894,7 +6456,7 @@ msgstr "Вебхук newrelic ожидает state одним из [created|acti
 msgid "Events key is missing from payload"
 msgstr "Ключ Events отсутствует в данных"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Не удалось обработать данные из Pivotal"
 
@@ -5911,83 +6473,105 @@ msgstr "Сообщение из Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr "Неизвестное действие вебхука WordPress: {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr "Экспорт ваших данных завершен. [Просмотрите и скачайте их]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Неверный поддомен для отражателя push-уведомлений"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Необходимо проверить  с помощью действительного API-ключа сервера Zulip"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Неверный UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Неверный тип токена"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr "{hostname} не является корректным именем хоста"
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr "Отсутствует ios_app_id"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "Отсутствует user_id или user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr "Ваш тариф не позволяет отправлять push-уведомления."
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr "Неверное свойство {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr "Неверный тип события."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Данные не в порядке."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr "Обнаружена повторная регистрация."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
-msgstr "Не удалось перенести клиента с сервера в облако. Пожалуйста, свяжитесь с поддержкой для получения помощи."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
+msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr "Искаженные данные журнала аудита"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Вам необходимо сбросить пароль."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Отсутствует параметр id_token"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Неверный OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Нельзя одновременно использовать mobile_flow_otp и desktop_flow_otp."
diff --git a/locale/ru/translations.json b/locale/ru/translations.json
index 9faefb1414..81345832b0 100644
--- a/locale/ru/translations.json
+++ b/locale/ru/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(прикрепленный файл)",
   "(forever)": "(навсегда)",
   "(hidden)": "(скрыто)",
-  "(no description)": "(нет описания)",
   "(no topic)": "(без темы)",
   "(or )": "(или )",
   "(you)": "(вы)",
   "({message_retention_days} days)": "({message_retention_days} дней)",
   "/dark (Switch to the dark theme)": "/dark (Переключить на темную тему)",
   "/light (Switch to light theme)": "/light (Переключить на светлую тему)",
-  "/me is excited (Display action text)": "/me в восторге (Показать текст действия)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Куда нам сегодня пойти пообедать? (Провести опрос)",
-  "/todo (Create a todo list)": "/todo (Создать список задач)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 день",
   "1 hour": "1 час",
   "1 week": "1 неделя",
@@ -28,7 +27,7 @@
   "6 hours": "6 часов",
   "Total messages: {total_messages}": "Всего сообщений: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name}будет удален из сообщений, в которых он был опубликован. Это действие нельзя будет отменить.
",
-  "Stream will be announced in #{notifications_stream}.
": "Канал будет анонсирован в #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Вы ищете сообщения, которые были отправлены более чем одним пользователем, а это невозможно.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Вы ищете сообщения, которые относятся более чем к одному каналу, а это невозможно.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Вы ищете сообщения, которые относятся более чем к одной теме, а это невозможно.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Активность неизвестна",
   "Add": "Добавить",
   "Add GIF": "Добавить GIF",
+  "Add a description": "",
   "Add a new alert word": "Добавить новое сигнальное слово",
   "Add a new bot": "Добавить нового бота",
   "Add a new code playground": "Добавить новую интерактивную среду для кода",
@@ -207,13 +207,14 @@
   "Bot": "Бот",
   "Bot email": "Адрес электронной почты бота",
   "Bot email (a-z, 0-9, and dashes only)": "Адрес электронной почты бота (только a-z, 0-9 и тире)",
+  "Bot is deactivated": "",
   "Bot owner": "Владелец бота",
   "Bot type": "Тип бота",
   "Bots": "Боты",
   "Browse 1 more stream": "Просмотреть еще 1 канал",
   "Browse recent conversations": "Просмотреть последние беседы",
   "Browse streams": "Просмотреть каналы",
-  "Browse {can_subscribe_stream_count} more streams": "Просмотреть еще каналы - {can_subscribe_stream_count} шт.",
+  "Browse {can_subscribe_stream_count} more streams": "Просмотр каналов - еще {can_subscribe_stream_count} шт.",
   "Bulleted list": "Ненумерованный список",
   "Business": "Бизнес",
   "Busy": "Занят/а",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Закрыть это диалоговое окно",
   "Code": "Код",
   "Code playgrounds": "Интерактивные среды",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Интерактивные среды — это среды разработки в браузере, такие как replit, предназначенные для удобного редактирования и отладки кода. В Zulip при наведении курсора на отмеченные языком программирования блоки кода будет отображаться кнопка для открытия кода на сайте интерактивной среды.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Свернуть поле ввода сообщения",
   "Collapse direct messages": "Свернуть личные сообщения",
   "Collapse message": "Свернуть сообщение",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Укажите методы аутентификации для вашей организации",
   "Configure the default streams new users are subscribed to when joining your organization.": "Укажите каналы по умолчанию, на которые автоматически будут подписаны новые пользователи вашей организации.",
   "Confirm": "Подтвердить",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Попробуйте искать во всех открытых каналах.",
   "Contact a moderator to resolve this topic.": "Обратитесь к модератору, чтобы отметить тему как решенную.",
   "Contact a moderator to unresolve this topic.": "Обратитесь к модератору, чтобы отметить тему как нерешенную.",
@@ -292,6 +294,7 @@
   "Copy code": "Скопировать код",
   "Copy link": "Скопировать ссылку",
   "Copy link to message": "Скопировать ссылку в сообщение",
+  "Copy link to profile": "",
   "Copy link to topic": "Скопировать ссылку на тему",
   "Copy mention syntax": "Скопировать синтаксис упоминания",
   "Copy version": "Скопировать версию",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Удалить все черновики",
   "Delete all selected drafts": "Удалить все выбранные черновики",
   "Delete code playground?": "Удалить интерактивную среду для кода?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Удалить дополнительное поле профиля?",
   "Delete data export?": "Удалить выгрузку данных?",
   "Delete draft": "Удалить черновик",
@@ -389,7 +393,7 @@
   "Desktop": "Компьютер",
   "Desktop & mobile apps": "Приложения для компьютера и смартфонов",
   "Desktop message notifications": "Всплывающие оповещения",
-  "Detailed keyboard shortcuts documentation": "Подробная документация по горячим клавишам",
+  "Detailed keyboard shortcuts documentation": "Подробная документация по сочетаниям клавиш",
   "Detailed message formatting documentation": "Подробная документация по форматированию сообщений",
   "Detailed search filters documentation": "Подробная документация по фильтрам поиска",
   "Direct message": "Личное сообщение",
@@ -413,7 +417,6 @@
   "Domain": "Домен",
   "Don’t allow disposable email addresses": "Не разрешать одноразовые адреса электронной почты",
   "Download": "Скачать",
-  "Download .zuliprc": "Скачать .zuliprc",
   "Download botserverrc": "Скачать botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Загрузить конфигурацию всех исходящих вебхук-ботов в формате Zulip Botserver.",
   "Download file": "Скачать файл",
@@ -443,12 +446,13 @@
   "Edit topic": "Редактировать тему",
   "Edit user": "Изменить пользователя",
   "Edit your last message": "Редактировать свое последнее сообщение",
-  "Edit your profile": "Редактировать свой профиль",
+  "Edit your profile": "Редактировать профиль",
   "Edit {group_name}": "Редактировать {group_name}",
   "Edited by {full_name}": "Изменено пользователем {full_name}",
   "Education (for-profit)": "Образование (коммерческое)",
   "Education (non-profit)": "Образование (некоммерческое)",
   "Effect": "Результат",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "Адрес электронной почты",
   "Email address changes are disabled in this organization.": "Изменение адреса электронной почты отключено в этой организации.",
@@ -550,7 +554,7 @@
   "Follow": "Отслеживать",
   "Followed": "Отслеживаемые",
   "Followed topics": "Отслеживаемые темы",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "К примеру, для настройки интерактивной среды для блоков кода Python вы можете установить:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Дополнительные примеры и технические подробности см. в справочной документации по добавлению интерактивных сред.",
   "For more examples, see the help center documentation on adding linkifiers.": "Дополнительные примеры см. в справочной документации по добавлению шаблонов ссылок.",
   "Forgot it?": "Забыли?",
@@ -606,6 +610,8 @@
   "Image": "Изображение",
   "In a meeting": "На встрече",
   "In muted streams, stream notification settings apply only to unmuted topics.": "Для заглушенных каналов настройки оповещения относятся только к включенным темам.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Неактивный",
   "Inactive bots": "Неактивные боты",
   "Inbox": "Входящие",
@@ -653,7 +659,7 @@
   "July": "Июль",
   "June": "Июнь",
   "Just now": "Только что",
-  "Keyboard shortcuts": "Горячие клавиши",
+  "Keyboard shortcuts": "Сочетания клавиш",
   "LaTeX": "LaTeX",
   "Label": "Метка",
   "Language": "Язык",
@@ -704,9 +710,11 @@
   "Manage this bot": "Управлять ботом",
   "Manage this user": "Управлять этим пользователем",
   "Manage user": "Управлять пользователем",
+  "Manage your API key": "",
   "March": "Март",
   "Mark all messages as read": "Отметить все сообщения как прочитанные",
   "Mark all messages as read?": "Отметить все сообщения как прочитанные?",
+  "Mark all messages as unread": "",
   "Mark as read": "Отметить как прочитанное",
   "Mark as resolved": "Поставить отметку \"решено\"",
   "Mark as unread from here": "Пометить как непрочитанные с этого места",
@@ -722,6 +730,7 @@
   "Mentioned in": "Упомянут в",
   "Mentions": "Упоминания",
   "Menus": "Меню",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Написать в #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Написать в #{stream_name} > {topic_name}",
   "Message actions": "Действия с сообщением",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Написать {recipient_label}",
   "Message {recipient_names}": "Написать {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Написать {recipient_name} ({recipient_status})",
+  "Messages": "Сообщения",
   "Messages in all public streams": "Сообщения во всех открытых каналах",
   "Messages sent by you": "Сообщения, отправленные вами",
   "Messages sent by {sender}": "Сообщения, отправленные {sender}",
@@ -805,6 +815,7 @@
   "Never expires": "Никогда не истекает",
   "New": "Новый",
   "New direct message": "Новое личное сообщение",
+  "New direct message from {sender_full_name}": "",
   "New email": "Новый адрес электронной почты",
   "New message": "Новое сообщение",
   "New option": "Новый вариант",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Следующее непрочитанное личное сообщение",
   "Next unread followed topic": "Следующая непрочитанная отслеживаемая тема",
   "Next unread topic": "Следующая непрочитанная тема",
-  "No bots found.": "Боты не найдены.",
+  "No active users.": "",
   "No bots match your current filter.": "Нет ботов, соответствующих текущему фильтру.",
   "No conversations match your filters.": "Нет бесед, соответствующих вашим фильтрам.",
-  "No custom emojis found.": "Дополнительные эмодзи не найдены.",
   "No custom emojis match your current filter.": "Нет дополнительных эмодзи, соответствующих текущему фильтру.",
   "No custom profile field configured for this organization.": "Для данной организации не заданы дополнительные поля профиля.",
-  "No deactivated users found.": "Отключенные пользователи не найдены.",
-  "No default streams found.": "Каналы по умолчанию не найдены.",
   "No default streams match your current filter.": "Нет каналов по умолчанию, соответствующих текущему фильтру.",
   "No description.": "Нет описания.",
   "No drafts selected": "Нет выделенных черновиков",
   "No drafts.": "Нет черновиков.",
-  "No exports found.": "Выгрузки данных не найдены.",
   "No group members match your current filter.": "Нет участников группы, соответствующих текущему фильтру.",
-  "No invites found.": "Приглашения не найдены.",
   "No invites match your current filter.": "Нет приглашений, соответствующих текущему фильтру.",
   "No language set": "Язык не определен",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "Нет шаблонов ссылок, соответствующих текущему фильтру.",
-  "No linkifiers set.": "Шаблоны ссылок не заданы.",
   "No matching results": "Нет подходящих результатов",
   "No matching streams": "Нет подходящих каналов",
   "No matching users.": "Нет подходящих пользователей.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Нет тем, отмеченных как решенные.",
   "No topics match your current filter.": "Нет тем, соответствующих текущему фильтру.",
   "No uploaded files match your current filter.": "Нет загруженных файлов, соответствующих текущему фильтру.",
+  "No user found": "",
   "No user group subscriptions.": "Нет подписок на группы пользователей.",
   "No user groups": "Нет групп пользователей",
   "No user to subscribe.": "Нет пользователей для подписки.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Никто в этой организации Zulip не сможет видеть данный адрес электронной почты.",
   "Non-profit (registered)": "Некоммерческое (зарегистрированное)",
   "None": "Нет",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Обратите внимание, что все ваши боты будут отключены.",
   "Note that organizations are limited to five exports per week.": "Пожалуйста, учтите, что организации ограничены пятью выгрузками данных в неделю.",
   "Nothing to preview": "Ничего нет для предпросмотра",
@@ -932,6 +940,7 @@
   "Other permissions": "Другие разрешения",
   "Other settings": "Другие настройки",
   "Other users in this Zulip organization will be able to see this email address.": "Другие пользователи в этой организации Zulip смогут видеть данный адрес электронной почты.",
+  "Others": "",
   "Out sick": "Болею",
   "Outgoing webhook message format": "Формат сообщения исходящего вебхука",
   "Override default emoji?": "Перезаписать встроенный эмодзи?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Требовать тему в сообщениях канала",
   "Research": "Исследование",
   "Resend": "Переслать",
-  "Resend invitation": "Отправить приглашение повторно",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Повторная отправка завершилась с ошибкой. Перезагрузите и повторите попытку.",
+  "Reset to default notifications": "",
   "Reset zoom": "Сбросить масштаб",
   "Restore draft": "Восстановить черновик",
   "Restrict email domains of new users?": "Ограничить почтовые домены для новых пользователей?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Искать  в названии темы или содержимом сообщения.",
   "Search people": "Поиск людей",
   "Search results": "Результаты поиска",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Узнайте, как настроить электронную почту.",
   "Select a stream": "Выберите канал",
   "Select a stream below or change topic name.": "Выберите ниже канал или измените название темы.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Показать количество отмеченных сообщений",
   "Show status text": "Показать текст статуса",
   "Show unread counts for": "Показывать счетчики непрочитанного для",
-  "Show/change your API key": "Показать/изменить ваш API-ключ",
   "Showing messages since {time_string}.": "Отображение сообщений с {time_string}.",
   "Sign up": "Зарегистрироваться",
   "Silent mentions do not trigger notifications.": "Беззвучные упоминания не вызывают оповещения. ",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "Электронная почта отправителя",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "Канал #{stream_name} отсутствует. Управляйте подписками на странице ваших каналов.",
   "The stream description cannot contain newline characters.": "Описание канала не должна содержать перенос строки.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Их пароли будут стерты в нашей системе, а все их боты будут отключены.",
   "Theme": "Тема оформления",
+  "There are no bots.": "",
   "There are no current alert words.": "Ни одного сигнального слова ещё не было добавлено.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Здесь нет сообщений.",
   "There are no streams you can view in this organization.": "В этой организации нет каналов, которые вы можете просматривать.",
   "There are no unread messages in your inbox.": "У вас нет непрочитанных входящих сообщений",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Этот бот отключен.",
   "This bot cannot be edited.": "Этот бот не может быть изменен.",
   "This bot has been deactivated.": "Этот бот отключен.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "В этой беседе могут быть другие сообщения, не отображаемые в этом виде.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Эта демо-организация будет автоматически удалена через {days_remaining} д., если не будет переобразована в постоянную организацию.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "Эта возможность доступна в Zulip Cloud Plus. Выполните апгрейд, чтобы получить доступ.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Это очистит  поле профиля для  пользователей.",
   "This will delete the  profile field for 1 user.": "Это удалит  поле профиля для 1 пользователя.",
   "This will delete the  profile field for  users.": "Это удалит  поле профиля для  пользователей.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Четверг",
   "Time": "Время",
   "Time format": "Формат времени",
@@ -1240,6 +1259,7 @@
   "Today": "Сегодня",
   "Today at {time}": "Сегодня {time}",
   "Toggle first emoji reaction on selected message": "Переключить первую эмодзи-реакцию для выбранного сообщения",
+  "Toggle preview mode": "",
   "Toggle subscription": "Переключить подписку",
   "Toggle the gear menu": "Переключить меню шестеренки",
   "Toggle topic mute": "Заглушить тему",
@@ -1344,7 +1364,7 @@
   "View in {name}": "Показать в {name}",
   "View in {playground_name}": "Показать в {playground_name}",
   "View message source": "Посмотреть исходный текст сообщения",
-  "View messages sent": "Просмотреть отправленные сообщения",
+  "View messages sent": "Посмотреть отправленные сообщения",
   "View messages with yourself": "Посмотреть сообщения с собой",
   "View profile": "Просмотр профиля",
   "View read receipts": "Показать подтверждения получения",
@@ -1362,7 +1382,7 @@
   "Warning: #{stream_name} is a private stream.": "Внимание: #{stream_name} — это закрытый канал.",
   "We are about to have a poll.  Please wait for the question.": "У нас будет опрос. Пожалуйста, дождитесь вопроса.",
   "We strongly recommend enabling desktop notifications. They help Zulip keep your team connected.": "Мы настоятельно рекомендуем включить всплывающие уведомления. Они помогут вашей команде оставаться на связи.",
-  "We've replaced the \"{originalHotkey}\" hotkey with \"{replacementHotkey}\" to make this common shortcut easier to trigger.": "Мы заменили горячие клавиши '{originalHotkey}' на '{replacementHotkey}', чтобы упростить использование этого сокращения.",
+  "We've replaced the \"{originalHotkey}\" hotkey with \"{replacementHotkey}\" to make this common shortcut easier to trigger.": "Мы заменили сочетание клавиш '{originalHotkey}' на '{replacementHotkey}', чтобы упростить его вызов.",
   "Web-public": "Открыто в сети",
   "Wednesday": "Среда",
   "Week of {date}": "Неделя {date}",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "У вас нет права добавлять других пользователей в каналы в этой организации.",
   "You do not have permission to join this group.": "У вас нет права на присоединение к этой группе.",
   "You do not have permission to leave this group.": "У вас нет права покинуть эту группу.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "У вас нет права на перемещение некоторых сообщений в этой теме. Обратитесь к модератору, чтобы переместить все сообщения.",
   "You do not have permission to post in this stream.": "У вас нет права писать в данном канале.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "У вас нет права отмечать решенной тему с сообщениями, старше {N, plural, one {# д.} other {# д.}} в этой организации.",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Zulip Server {display_version}",
   "Zulip Server {display_version} (modified)": "Zulip Server {display_version} (модифицирован)",
   "Zulip Server {display_version} (patched)": "Zulip Server {display_version} (пропатчен)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "Zulip позволяет настраивать оповещения для каждой темы. Вы также можете автоматически отслеживать или включать оповещения в темах, которые вы начали или в которых участвовали.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Zulip позволяет заглушать темы и каналы, чтобы не получать оповещения о сообщениях, которые вам не интересны. Глушение канала фактически глушит все темы в нем. Вы также можете вручную заглушить тему в незаглушенном канале или, наоборот, включить тему в заглушенном канале. Дополнительная информация.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip необходимо отправлять электронный письма для подтверждения адресов пользователей и отправки оповещений.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip необходимо ваше разрешение, чтобы включить всплывающие уведомления.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Перевод Zulip выполняется нашим потрясающим сообществом переводчиков-добровольцев. Если вы хотите помочь, ознакомьтесь с рекомендациями по переводу Zulip.",
@@ -1541,6 +1561,9 @@
   "more topics": "еще темы",
   "she/her": "она/её",
   "they/them": "они/их",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Готово! {N} сообщение помечено как прочитанное.} few {Готово! {N} сообщений помечены как прочитанные.} many {Готово! {N} сообщений помечены как прочитанные.} other {Готово! {N} сообщений помечены как прочитанные.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Готово! {N} сообщение помечено как непрочитанное.} few {Готово! {N} сообщений помечены как непрочитанные.} many {Готово! {N} сообщений помечены как непрочитанные.} other {Готово! {N} сообщений помечены как непрочитанные.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {Пользователь успешно приглашен.} few {Пользователи успешно приглашены.} many {Пользователи успешно приглашены.} other {Пользователи успешно приглашены.}}",
diff --git a/locale/si/LC_MESSAGES/django.po b/locale/si/LC_MESSAGES/django.po
index 1bcd482537..d576341500 100644
--- a/locale/si/LC_MESSAGES/django.po
+++ b/locale/si/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: HelaBasa Group , 2022\n"
 "Language-Team: Sinhala (http://app.transifex.com/zulip/zulip/language/si/)\n"
@@ -20,57 +20,51 @@ msgstr ""
 "Language: si\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "අමුත්තන්ට ඉඩ නැත"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "සංවිධානය වලංගු නොවේ"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "පොදු ප්රචාර"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "පෞද්ගලික ප්රචාර"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "විශ්ලේෂණ දත්ත නැත. ඔබගේ සේවාදායක පරිපාලක අමතන්න."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -79,7 +73,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -88,7 +82,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -97,7 +91,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -106,7 +100,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -115,11 +109,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "මෙම සංවිධානය සඳහා වන සියළුම සුලිප් බලපත්ර දැනට භාවිතයේ ඇත."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -135,124 +129,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} {last4} න් අවසන් වේ"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "යම් වැරැද්දක් සිදුවී ඇත. පිටුව නැවත පූරණය කරන්න."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "යම් වැරැද්දක් සිදු වී ඇත. තත්පර කිහිපයක් රැඳී සිට යළි උත්සාහ කරන්න."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "සැලසුම යාවත්කාල කිරීමට නොහැකිය. සැලසුම කල් ඉකුත් වී නව සැලසුමක් සමඟ ප්රතිස්ථාපනය කර ඇත."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "සැලසුම යාවත්කාල කිරීමට නොහැකිය. සැලසුම අවසන් වී ඇත."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "බලපත්ර අතින් යාවත්කාල කිරීමට නොහැකිය. ඔබගේ සැලසුම ස්වයංක්රීය බලපත්ර කළමනාකරණය යටතේ ය."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "වත්මන් ලදුපත් කාල සීමාව තුළ ඔබගේ සැලසුම දැනටමත් බලපත්ර {licenses} යටතේ ඇත."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "වත්මන් ලදුපත් කාල සීමාව තුළ ඔබට බලපත්ර අඩු කළ නොහැකිය."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "ඔබගේ සැලසුම දැනටමත් {licenses_at_next_renewal} බලපත්ර සමඟ අලුත් කිරීමට නියමිතය."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "සංශෝධනයට කිසිත් නැත."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "මෙම සංවිධානයට පාරිභෝගිකයින් නැත!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "ලදුපත් පරිපාලකයෙකු හෝ සංවිධාන හිමිකරුවෙකු විය යුතුය"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -260,54 +254,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "දෝෂයකි"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -316,8 +317,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "අභ්යන්තර සේවාදායකයේ දෝෂයකි"
 
@@ -422,7 +456,7 @@ msgstr ""
 msgid "Total users"
 msgstr "මුළු පරිශීලකයින්"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "පරිශීලකයින්"
 
@@ -562,36 +596,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "සබැඳිය ඔබගේ අතිරික්සුවට නිවැරදිව පිටපත් කර තිබේ දැයි බලන්න. ඔබට තවමත් මෙම පිටුව මුණ ගැසෙනවා නම් එය බොහෝ විට අපගේ වරදක් විය හැකිය. සමාවන්න."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "ලදුපත්"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "අවලංගු"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "අනුපාත සීමාව ඉක්මවිණි."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "ඔබට තත්. %(retry_after)s කින් නැවත උත්සාහ කළ හැකිය."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -613,6 +743,451 @@ msgstr "ප්රවර්ග"
 msgid "All"
 msgstr "සියළුම"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "සුලිප් සංවර්ධන ප්රජාව"
@@ -632,11 +1207,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr "දායකයෙකු ලෙස එකතු වන්න"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -651,12 +1222,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "සංවිධානය සාදන්න"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -689,51 +1260,48 @@ msgstr "අධ්යාපනික මිලකරණය"
 msgid "View pricing"
 msgstr "මිලකරණය දකින්න"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "සහාය අමතන්න"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "වෙත"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "සංවිධානය"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "මාතෘකාව"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "පණිවිඩය"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "යොමුකරන්න"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -749,14 +1317,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -804,7 +1364,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "ලියාපදිංචිය"
 
@@ -837,8 +1397,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "ඇතුල් වන්න"
 
@@ -871,26 +1431,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "සුලිප් වෙත සම්බන්ධ වීමට නොහැකිය."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "යාවතකාල ප්රමාද විය හැකිය."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "උත්සාහ කරන්න."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "පණිවිඩ"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1113,21 +1669,21 @@ msgstr "පරිශීලක අමුත්තන්"
 msgid "Normal users"
 msgstr "සාමාන්ය පුද්ගලයින්"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "වසන්න"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "යාවත්කාල"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "සුලිප්"
 
@@ -2350,7 +2906,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2370,7 +2926,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2380,12 +2945,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "වි-තැපැල් ලිපිනය"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "ගිණුම් සොයාගන්න"
 
@@ -2417,7 +2982,7 @@ msgstr "අනුකලන"
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "නව සංවිධානය"
 
@@ -2785,25 +3350,16 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "අනුපාත සීමාව ඉක්මවිණි."
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "පරිශීලකයෙකුට මෙම ක්රියාව සිදු කළ හැකි\n                        වාර ගණනේ සීමාව ඉක්මවා ඇත."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "ඔබට තත්. %(retry_after)s කින් නැවත උත්සාහ කළ හැකිය."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2972,6 +3528,22 @@ msgstr "ඔබ උනන්දු වන්නේ කුමක් ගැනද?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "ඔබගේ මුරපදය නැවත සකසන්න"
@@ -3129,123 +3701,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "ලියාපදිංචි කිරීම්"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} දැන් සුලිප් වෙත ලියාපදිංචි වී ඇත. (එකතුව: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "සුලිප් හා එක් වීමට ඔබගේ ඇරයුම {user} පිළිගෙන ඇත!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "මෙම සංවිධානය සඳහා ආරාධනා යැවීමට ඔබගේ ගිණුම ඉතා අළුත් ය. සංවිධාන පරිපාලකයෙකුගෙන් හෝ වඩාත් පළපුරුදු පරිශීලකයෙකුගෙන් අසන්න."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "අපට කිසිවෙකුට ආරාධනා කිරීමට නොහැකි විය."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3275,72 +3831,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "ඔබගේ සංවිධානය පණිවිඩ සංස්කරණය අක්රිය කර ඇත"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "මෙම පණිවිඩය සංස්කරණය කිරීමට ඔබට අවසර නැත"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "මෙම පණිවිඩය සංස්කරණ කාල සීමාව පසු වී ඇත"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} මෙම මාතෘකාව විසඳා ඇති ලෙස සලකුණු කර ඇත."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} මෙම මාතෘකාව නොවිසඳුනු ලෙස සලකුණු කර ඇත."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "ඔබගේ සංවිධානය පණිවිඩ සංස්කරණය අක්රිය කර ඇත"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "මෙම පණිවිඩය සංස්කරණය කිරීමට ඔබට අවසර නැත"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "මෙම පණිවිඩය සංස්කරණ කාල සීමාව පසු වී ඇත"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "මෙම පණිවිඩය ගෙන යාමට ඔබට අවසර නැත"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3359,137 +3915,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "පණිවිඩ(ය) වලංගු නොවේ"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "පණිවිඩය ගෙනහැර දැක්වීමට නොහැකිය"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "ලබන්නන් සඳහා වලංගු නොවන දත්ත වර්ගයකි"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "ලබන්නන්ගේ ලැයිස්තු වල වි-තැපැල් හෝ පරිශීලක හැඳු. අඩංගු විය හැකිය නමුත් දෙකම නොවේ."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "මෙම නම සහිත අභිරුචි ඉමොජියක් දැනටමත් පවතී."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3498,38 +4059,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "සවිස්තරයක් නැත."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3543,7 +4104,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr "ඔබට මෙම පණිවිඩයට උප පණිවිඩයක් ඇමුණිය නොහැකිය."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3553,187 +4114,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "මෙම උප වසම සමඟ ගිණුමෙහි සම්බන්ධතාවයක් නැත"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "සේවාදායක පරිපාලකයෙකු විය යුතුය"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "ප්රමාණවත් අවසරයක් නැත"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "උපවසම '-' සමඟ ආරම්භ හෝ අවසන් විය නොහැකිය."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "උපවසම් වල තිබිය හැකි වන්නේ කුඩා අකුරු, අංක සහ '-' පමණි."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "ඔබගේ නියම වි-තැපැල් ලිපිනය භාවිතා කරන්න."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "ඔබ {email} භාවිතයෙන් එක් වීමට උත්සාහ කරන සංවිධානය නොපවතී."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "කරුණාකර සංවිධානයේ පරිපාලකගෙන් {email} සඳහා ඇරයුමක් ඉල්ලන්න."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "ඔබගේ වි-තැපැල් ලිපිනය, {email}, මෙම සංවිධානයේ ගිණුම් සඳහා ලියාපදිංචි වීමට ඉඩ දී ඇති  වසම් තුළ නැත."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "මෙම සංවිධානය තුළ + අඩංගු වි-තැපැල් ලිපින වලට ඉඩ නැත."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "සියළුම සුලිප් බලපත්ර භාවිතා වන බැවින් නව සාමාජිකයින්ට මෙම සංවිධානයට එක් විය නොහැකිය. කරුණාකර ඔබට ආරාධනා කළ පුද්ගලයාට බලපත්ර ගණන වැඩි කරන ලෙස පවසා නැවත උත්සාහ කරන්න."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "නව මුරපදය"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "උපරිම වශයෙන් වි-තැපැල් 10 ක් ඇතුල් කරන්න."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "පණිවිඩයට ලබන්නන් සිටිය යුතුය"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "පණිවිඩ වර්ගය වලංගු නොවේ"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "ඇමුණුම වලංගු නොවේ"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "පණිවිඩයට ලබන්නන් සිටිය යුතුය!"
 
@@ -3790,88 +4351,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "ලිපිනය වලංගු නොවේ."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "ඔබගේ වසමෙන් පිටත."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "+ අඩංගු වි-තැපැල් ලිපින වලට ඉඩ නැත."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "පද්ධතියේ ස්වයංක්රමලේඛ සඳහා වෙන් කර ඇත."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} ට දැනටමත් ගිණුමක් ඇත"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "දැනටමත් ගිණුමක් තිබේ."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "වලංගු නොවන අභිරුචි ඉමොජි කි."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "වලංගු නොවන අභිරුචි ඉමොජි නම."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "වලංගු නොවන ඉමොජි කේතය."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "වලංගු නොවන ඉමොජි නම."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "වලංගු නොවන ඉමොජි වර්ගය."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "සංවිධාන පරිපාලකයෙකු හෝ ඉමොජි කතුවරයෙකු විය යුතුය"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "ඉමොජි නම අස්ථානගත වී ඇත"
 
@@ -3879,119 +4440,119 @@ msgstr "ඉමොජි නම අස්ථානගත වී ඇත"
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "සංවිධානයේ හිමිකරු"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "පරිශීලක"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "යෙ.ක්ර.මු. භාවිතය අනුපාත සීමාව ඉක්මවා ඇත"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "සංවිධානයේ සාමාජිකයෙකු විය යුතුය"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "සංවිධානයේ පරිපාලකයෙකු විය යුතුය"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "සංවිධානයේ හිමිකරුවෙකු විය යුතුය"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "ඔබගේ පරිශීලක නාමය හෝ මුරපදය වැරදි ය"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "ඔබගේ මුරපදය අබල කර ඇති අතර එය නැවත සැකසිය යුතුය"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "යෙ.ක්ර.මු. යතුර වලංගු නොවේ"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "වලංගු නොවන උපවසමකි"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3999,47 +4560,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "වලංගු නොවන බාහිර ගිණුම් වර්ගයකි"
 
@@ -4137,106 +4698,106 @@ msgstr "ඵලදායිතාව"
 msgid "Version control"
 msgstr "අනුවාද පාලනය"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "පණිවිඩය හිස් නොවිය යුතුය"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "ආයුබෝවන්, සුලිප් වෙත සාදරයෙන් පිළිගනිමු!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4245,119 +4806,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "වලංගු නොවන JSON ප්රතිචාරයකි"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4371,45 +4932,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} ඔබ ගැන සඳහන් කළා:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} සෑම කෙනෙකුම සඳහන් කළා:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4421,23 +4982,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' තවදුරටත් සුලිප් භාවිතා නොකරයි."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4457,21 +5018,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4508,7 +5069,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4522,7 +5083,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4531,7 +5092,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4563,28 +5124,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} බූලියන් නොවේ"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} දිනයක් නොවේ"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4595,18 +5156,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} ඉතා කුඩා ය"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} යනු නිඛිලයක් නොවේ"
@@ -4616,24 +5177,24 @@ msgstr "{var_name} යනු නිඛිලයක් නොවේ"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} ඉතා විශාලයි"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} ලැයිස්තුවක් නොවේ"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} වලංගු නොවේ"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} ඉතා දිගයි (සීමාව: අකුරු {max_length})"
@@ -4643,8 +5204,8 @@ msgstr "{var_name} ඉතා දිගයි (සීමාව: අකුරු {
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4663,21 +5224,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "රූපයේ ප්රමාණය සීමාව ඉක්මවයි."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4734,161 +5295,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "නම දිග වැඩියි!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "නම ඉතා කෙටි ය!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "නමෙහි වලංගු නොවන අකුරු ඇත!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "නම දැනටමත් භාවිතයේ ඇත!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "වින්යාස දත්ත වලංගු නොවේ!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "ස්වයංක්රමලේඛ වර්ගය වලංගු නොවේ"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "අතුරු මුහුණතෙහි වර්ගය වලංගු නොවේ"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "එවැනි ස්වයංක්රමලේඛයක් නැත"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "එබඳු පරිශීලකයෙකු නැත"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} වලංගු හෙක්ස් වර්ණ කේතයක් නොවේ"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable}! = {expected_value} ({value} වැරදියි)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} යනු ඒ.ස.නි. නොවේ"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' හිස් විය නොහැකිය."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4922,215 +5483,211 @@ msgstr "CSRF දෝෂයකි: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "ඉමොජි නමෙහි වලංගු නොවන අකුරු ඇත"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "පරිපාලකයින් පමණි"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "කිසිවෙක් නැත"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "සංවිධානයේ හිමිකරු"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "සංවිධානයේ පරිපාලක"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "සාමාජිකයා"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "අමුත්තා"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "ප්රසිද්ධ"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "පෞද්ගලික, හවුල් ඉතිහාසය"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "පෞද්ගලික, ආරක්ෂිත ඉතිහාසය"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "පළ කළ හැකි වන්නේ පරිපාලකයින්ට පමණි"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "පළ කළ හැකි වන්නේ පූර්ණ සාමාජිකයින්ට පමණි"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "යුනිකේත ඉමොජි"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "අභිරුචි ඉමොජි"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "සුලිප් අමතර ඉමොජි"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "විකල්ප ලැයිස්තුව"
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "සබැඳිය"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "බාහිර ගිණුම"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "යුනිකේත ඉමොජි"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "අභිරුචි ඉමොජි"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "සුලිප් අමතර ඉමොජි"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "ඉමොජි නමෙහි වලංගු නොවන අකුරු ඇත"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "ප්රසිද්ධ"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "පෞද්ගලික, හවුල් ඉතිහාසය"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "පෞද්ගලික, ආරක්ෂිත ඉතිහාසය"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "පළ කළ හැකි වන්නේ පරිපාලකයින්ට පමණි"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "පළ කළ හැකි වන්නේ පූර්ණ සාමාජිකයින්ට පමණි"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "පරිපාලකයින් පමණි"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "කිසිවෙක් නැත"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "සංවිධානයේ හිමිකරු"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "සංවිධානයේ පරිපාලක"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "සාමාජිකයා"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "අමුත්තා"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "නොදන්නා අ.ජා.කෙ. ලිපිනයකි"
@@ -5143,20 +5700,20 @@ msgstr "නොදන්නා මෙහෙයුම් පද්ධතියක
 msgid "An unknown browser"
 msgstr "නොදන්නා අතිරික්සුවකි"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5194,41 +5751,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "ක්ෂේත්ර වර්ගය වලංගු නොවේ."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "පෙරනිමි අභිරුචි ක්ෂේත්රය යාවත්කාල කළ නොහැකිය."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5279,7 +5836,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5328,19 +5885,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5356,42 +5913,46 @@ msgstr "පරිශීලකයා දැනටමත් නිහඬ කර 
 msgid "User is not muted"
 msgstr "පරිශීලකයා නිහඬ කර නැත"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5406,55 +5967,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "{domain} වසම දැනටමත් ඔබගේ සංවිධානයේ කොටසකි."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "ඔබ හරියටම එක් ගොනුවක් උඩුගත කළ යුතුය."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5488,7 +6049,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "ඔබ හරියටම එක් නිරූපකයක් උඩුගත කළ යුතුය."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5516,71 +6077,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5589,7 +6150,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "උප පණිවිඩ සඳහා වලංගු නොවන json කි"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5613,112 +6174,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr " ගොනුවේ නම වලංගු නොවේ"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "ඔබට වරකට එක් ගොනුවක් පමණක් උඩුගත කළ හැකිය"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "නව දත්ත සපයා නැත"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "{user_id} පරිශීලක දැනටමත් මෙම සමූහයේ සාමාජිකයෙකි"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "මෙම සංවිධානය තුළ වි-තැපැල් ලිපිනය වෙනස් කිරීම් අබල කර ඇත."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "වලංගු නොවන පෙරනිමි_භාෂා"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "වැරදි මුරපදයකි!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "නව මුරපදය ඉතා දුර්වලයි!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "මාතෘකාව නිහඬ කර නැත"
 
@@ -5779,43 +6340,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "සූම් ඇමතුම සෑදීමට අසමත් විය"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "බිග්බ්ලූබටන් වින්යාසගත කර නැත."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "බිග්බ්ලූබටන් සේවාදායකයට සම්බන්ධ වීමේ දෝෂයකි."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5848,11 +6409,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "මාතෘකාව හිස් නොවිය යුතුය"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "අන්තර්ගතය හිස් විය නොහැකිය"
 
@@ -5879,7 +6440,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5896,83 +6457,105 @@ msgstr "ස්ලැක් වෙතින් පණිවිඩයක්"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "ඔබගේ මුරපදය නැවත සැකසිය යුතුය."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/si/translations.json b/locale/si/translations.json
index c233051bc3..50729ab614 100644
--- a/locale/si/translations.json
+++ b/locale/si/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(සදහටම)",
   "(hidden)": "",
-  "(no description)": "(සවිස්තරයක් නැත)",
   "(no topic)": "(මාතෘකාවක් නැත)",
   "(or )": "",
   "(you)": "(ඔබ)",
   "({message_retention_days} days)": "(දවස් {message_retention_days})",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "දවස් 1",
   "1 hour": "පැය 1",
   "1 week": "සති 1",
@@ -28,7 +27,7 @@
   "6 hours": "පැය 6",
   "Total messages: {total_messages}": "මුළු පණිවිඩ: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "එකතු කරන්න",
   "Add GIF": "චලනරූ එකතු කරන්න",
+  "Add a description": "",
   "Add a new alert word": "නව අනතුරු ඇඟවීමේ වචනයක් එක්කරන්න",
   "Add a new bot": "නව ස්වයංක්රමලේඛයක් එක්කරන්න",
   "Add a new code playground": "නව කේත ක්රීඩාපිටියක් එක් කරන්න",
@@ -207,6 +207,7 @@
   "Bot": "ස්වයංක්රමලේඛ",
   "Bot email": "ස්වයංක්රමලේඛයේ වි-තැපෑල",
   "Bot email (a-z, 0-9, and dashes only)": "ස්වයංක්රමලේඛ වි-තැපෑල (අ-ෆ, 0-9, සහ ඉරි පමණි)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "ස්වයංක්රමලේඛ වර්ගය",
   "Bots": "ස්වයංක්රමලේඛ",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "කේත ක්රීඩාපිටිය",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "කේතයේ පිටපතක්",
   "Copy link": "සබැඳියේ පිටපතක්",
   "Copy link to message": "පණිවිඩයට සබැඳියක පිටපතක්",
+  "Copy link to profile": "",
   "Copy link to topic": "මාතෘකාවට සබැඳියක පිටපතක්",
   "Copy mention syntax": "",
   "Copy version": "අනුවාදයේ පිටපතක්",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "වසම",
   "Don’t allow disposable email addresses": "",
   "Download": "බාගන්න",
-  "Download .zuliprc": ".zuliprc බාගන්න",
   "Download botserverrc": "බොට්සර්වර්ක් බාගන්න",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "ගොනුව බාගන්න",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "වි-තැපෑල",
   "Email address": "වි-තැපැල් ලිපිනය",
   "Email address changes are disabled in this organization.": "මෙම සංවිධානය තුළ වි-තැපැල් ලිපිනය වෙනස් කිරීම් අබල කර ඇත.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "රැස්වීමක",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "මැදින්",
   "Mark all messages as read": "සියළු පණිවිඩ කියවූ බව යොදන්න",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "කියවූ ලෙස සලකුණු කරන්න",
   "Mark as resolved": "විසඳූ ලෙස සලකුණු කරන්න",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "හි සඳහන් කර ඇත",
   "Mentions": "සැඳහුම්",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "පණිවිඩ ක්රියාමාර්ග",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "{recipient_label} පණිවිඩය",
   "Message {recipient_names}": "{recipient_names} පණිවිඩය",
   "Message {recipient_name} ({recipient_status})": "පණිවිඩය {recipient_name} ({recipient_status})",
+  "Messages": "පණිවිඩ",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "නව",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "නව වි-තැපෑල",
   "New message": "නව පණිවිඩය",
   "New option": "නව විකල්පය",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "නොකියවූ ඊළඟ මාතෘකාව",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "වත්මන් පෙරහනට ස්වයංක්රමලේඛ නොගැළපේ.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "සවිස්තරයක් නැත.",
   "No drafts selected": "",
   "No drafts.": "කටුපිටපත් නැත",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "වත්මන් පෙරහනට කිසිදු ඇරයුමක් නොගැළපේ.",
   "No language set": "භාෂා කට්ටලයක් නැත",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "ගැළපෙන පරිශීලකයින් නැත.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "වත්මන් පෙරහනට ගැළපෙන මාතෘකා නැත.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "ඔබ නඩත්තු කරන ඕනෑම ස්වයංක්රමලේඛයක් අබල වන බව සලකන්න.",
   "Note that organizations are limited to five exports per week.": "සංවිධාන සතියකට නිර්යාත පහකට සීමා වී ඇති බව සලකන්න.",
   "Nothing to preview": "පෙරදසුන් සඳහා කිසි දෙයක් නැත",
@@ -932,6 +940,7 @@
   "Other permissions": "වෙනත් අවසර",
   "Other settings": "වෙනත් සැකසුම්",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "අසනීපයෙන්",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "නැවත යවන්න",
-  "Resend invitation": "ඇරයුම යළි යවන්න",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": " සඳහා මාතෘකාවේ හෝ පණිවිඩ අන්තර්ගතය තුළ සොයන්න.",
   "Search people": "මිනිසුන් සොයන්න",
   "Search results": "සෙවුම් ප්රතිඵල",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "තරු යෙදූ පණිවිඩ ගණන පෙන්වන්න",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "ඔබගේ යෙ.ක්ර.මු. යතුර පෙන්වන්න/වෙනස් කරන්න",
   "Showing messages since {time_string}.": "",
   "Sign up": "ලියාපදිංචි වන්න",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "ඔවුන්ගේ මුරපදය අපගේ පද්ධතියෙන් හිස් කෙරෙන අතර, ඔවුන් නඩත්තු කරන ඕනෑම ස්වයංක්රමලේඛයක් අබල වෙනු ඇත.",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "දැනට අනතුරු ඇඟවීමේ වචන නැත.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "බ්රහස්පතින්දා",
   "Time": "කාලය",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "අද",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "සුලිප් පරිවර්තන සඳහා දායක වී ඇත්තේ අපගේ විශ්මය ජනක ස්වේච්ඡා පරිවර්තක ප්රජාව විසිනි. ඔබට උදව් කිරීමට අවශ්ය නම්, සුලිප් පරිවර්තන මාර්ගෝපදේශය බලන්න.",
@@ -1541,6 +1561,9 @@
   "more topics": "තවත් මාතෘකා",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/sr/LC_MESSAGES/django.po b/locale/sr/LC_MESSAGES/django.po
index 50224247c0..4f586f8693 100644
--- a/locale/sr/LC_MESSAGES/django.po
+++ b/locale/sr/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Iorek Byrnison , 2023\n"
 "Language-Team: Serbian (http://app.transifex.com/zulip/zulip/language/sr/)\n"
@@ -20,57 +20,51 @@ msgstr ""
 "Language: sr\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Није дозвољено за госте"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Неисправна организација"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Јавни токови"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Приватни токови"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Директне поруке"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Групне директне поруке"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr "Недостаје ток за графикон: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr "Непознат назив графикона: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Време почетка је касније од времена завршетка. Почетак: {start}, Завршетак: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Нема доступних података за аналитику. Молим вас контактирајте вашег администратора сервера."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Неисправни параметри"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -79,7 +73,7 @@ msgid ""
 "users to join."
 msgstr "Ваша организација нема слободних Зулип лиценци и више не може да прихвата нове кориснике. Молим вас [повећајте број лиценци]({billing_page_link}) или [деактивирајте неактивне кориснике]({deactivate_user_help_page_link}) да би сте омогућили приступ новим корисницима."
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -88,7 +82,7 @@ msgid ""
 "join."
 msgstr "Ваша организација има само једну слободну Зулип лиценцу. Можете [повећати број лиценци]({billing_page_link}) или [деактивирати неактивне кориснике]({deactivate_user_help_page_link}) да би сте омогућили приступ више од једном кориснику."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -97,7 +91,7 @@ msgid ""
 "join."
 msgstr "Ваша организација има само две слободне Зулип лиценце. Можете [повећати број лиценци]({billing_page_link}) или [деактивирати неактивне кориснике]({deactivate_user_help_page_link}) да би сте омогућили приступ више од два корисника."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -106,7 +100,7 @@ msgid ""
 "join."
 msgstr "Ваша организација има само три слободне Зулип лиценце. Можете [повећати број лиценци]({billing_page_link}) или [деактивирати неактивне кориснике]({deactivate_user_help_page_link}) да би сте омогућили приступ више од три корисника."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -115,11 +109,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Нови члан ({email}) није био у могућности да приступи вашој организацији јер су све Зулип лиценце искоришћене. Молим вас [повећајте број лиценци]({billing_page_link}) или [деактивирајте неактивне кориснике]({deactivate_user_help_page_link}) да би сте омогућили приступ новим корисницима."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Све Зулип лиценце за ову организацију су тренутно искоришћене."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -135,124 +129,124 @@ msgstr "Регистрација је деактивирана"
 msgid "Invalid remote server."
 msgstr "Неисправан удаљени сервер."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr "Морате купити лиценце за све активне кориснике у вашој организацији (минимално {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr "Фактуре са више од {max_licenses} лиценци не могу бити обрађене путем ове странице. Да би сте завршили надоградњу, молим вас контактирајте {email}."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr "Није наведен начин плаћања у датотеци."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} се завршава за {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Непознат начин плаћања. Молим вас контактирајте {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Десило се нешто непредвиђено. Молим вас контактирајте {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Десило се нешто непредвиђено. Молим вас учитајте поново страницу."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Десило се нешто непредвиђено. Молим вас сачекајте неколико секунди па покушајте поново."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr "Молимо додајте кредитну картицу пре почетка бесплатног пробног периода."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr "Молим вас додајте кредитну картицу да би сте заказали надоградњу."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Није могуће освежити план. План је истекао и замењен је новим планом."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Није могуће освежити план. План је завршен."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
-msgstr ""
+msgstr "Није могуће изменити лиценцу у тренутном обрачунском периоду за бесплатан пробни план."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Није могуће ручно освежавање лиценце. Ваш план је на аутоматском управљању лиценце."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Ваш план већ има {licenses} лиценци у тренутном обрачунском периоду."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Не можете да смањите лиценце у тренутном обрачунском периоду."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "За ваш план је већ организована обнова са {licenses_at_next_renewal} лиценци."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Ништа за измену."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Нема купца за ову организацију!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Сесија није пронађена"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Морате бити администратор за плаћање или власник организације"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Сврха плаћања није пронађена"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "Проследите stripe_session_id или stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -260,54 +254,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr "Захтев ваше организације за спонзорисаним хостингом је одобрен! Унапређени сте на {plan_name}, потпуно бесплатно. {emoji}\n\nАко би сте могли да {begin_link}наведете Зулип као спонзора на вашем веб сајту{end_link}, били би смо вам много захвални!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
-msgstr ""
+msgstr "Параметар 'потврђено' је неопходан"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr "Истекао је приступни токен за наплату."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr "Неисправан приступни токен за наплату."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr "Кориснички налог још увек не постоји."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr "Морате прихватити Услове сервиса да би сте наставили."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr "Ова zulip_org_id није регистрована са Зулиповим системом за управљањем наплате."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr "Неисправан zulip_org_key за ову zulip_org_id."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr "Регистрација вашег сервера је деактивирана."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Неисправни параметри"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Грешка"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Начин није дозвољен (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Страница није пронађена (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -316,8 +317,41 @@ msgid ""
 "                        "
 msgstr "\n                        Ако ова грешка није очекивана, можете\n                        контактирати подршку.\n                        "
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Начин није дозвољен (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Интерна грешка сервера"
 
@@ -422,7 +456,7 @@ msgstr "Активни 15 дана"
 msgid "Total users"
 msgstr "Укупно корисника"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Корисници"
 
@@ -562,37 +596,133 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Проверите да сте исправно ископирали везу у вашем прегледачу. Ако и даље долазите на ову страну, вероватно је то због наше грешке. Извињавамо се."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Рачун"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Затвори прозор"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Заборави"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Откажи"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Потврди"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
-msgstr "Заборави"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Статус наплате"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Деактавирати регистрацију сервера?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Прекорачено је ограничење брзине"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Прекорачено је ограничење брзине."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "Можете да пробате поново за %(retry_after)s секунди."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Надогради"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Конвертујте демонстративну организацију пре надоградње."
 
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
@@ -613,6 +743,451 @@ msgstr "Категорије"
 msgid "All"
 msgstr "Све"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Зулип развојна заједница"
@@ -632,11 +1207,7 @@ msgstr "Приступите као самостални хостер"
 msgid "Join as a contributor"
 msgstr "Приступите као доприноситељ"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "Статус наплате"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -651,12 +1222,12 @@ msgstr "Статус наплате"
 msgid "Create organization"
 msgstr "Направите организацију"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr "Планови и ценовник"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -689,51 +1260,48 @@ msgstr "Цена за образовне институције"
 msgid "View pricing"
 msgstr "Погледајте ценовник"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Зулип за пословне кориснике"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Контактирајте подршку"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Од"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Организација"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Наслов"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "Порука"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Пошаљи"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Хвала што сте нас контактирали"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Хвала што сте нас контактирали!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Контактираћемо вас убрзо."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -749,14 +1317,6 @@ msgstr "Аватар"
 msgid "Try Zulip now"
 msgstr "Пробајте Зулип сада"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr "Надогради"
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr "Конвертујте демонстративну организацију пре надоградње."
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -804,7 +1364,7 @@ msgstr "Настави"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Региструјте се"
 
@@ -837,8 +1397,8 @@ msgstr "Већ имате налог?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Пријави се"
 
@@ -871,26 +1431,22 @@ msgstr "Уколико се ова порука сама не уклони, по
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Грешка приликом учитавања Зулипа. Покушајте да освежите страницу."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Није могуће повезивање на Зулип."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Исправке су можда одложене."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Ускоро покушавам поново..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Покушајте сада."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Поруке"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr "Проблем аутентификације поддомена"
@@ -1113,21 +1669,21 @@ msgstr "Гости"
 msgid "Normal users"
 msgstr "Обични корисници"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr "Проследите е-поруке на налог е-поште"
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Затвори"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Надогради"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Зулип"
 
@@ -2309,11 +2865,11 @@ msgstr ""
 #: templates/zerver/emails/remote_realm_billing_confirm_login.html:14
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:4
 msgid "Confirm and log in"
-msgstr ""
+msgstr "Потврди и пријави се"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.subject.txt:1
 msgid "Confirm email for Zulip plan management"
-msgstr ""
+msgstr "Потврди адресу е-поште за Зулипово управљање планом"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:1
 #, python-format
@@ -2350,8 +2906,8 @@ msgstr "Ваш захтев за Зулип спонзорством је одо
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
-msgstr "Ако би сте могли наведите Зулип као спонзора на вашем веб сајту, то би нам заиста значило!"
+"appreciate it!"
+msgstr ""
 
 #: templates/zerver/find_account.html:4
 msgid "Find your accounts"
@@ -2370,7 +2926,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2380,12 +2945,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Адреса е-поште"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Пронађи налоге"
 
@@ -2417,7 +2982,7 @@ msgstr "Интеграције"
 msgid "Desktop & mobile apps"
 msgstr "Рачунар и мобилне апликације"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Нова организација"
 
@@ -2785,13 +3350,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "Прекорачено је ограничење брзине"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Прекорачено је ограничење брзине."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2799,11 +3360,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "Можете да пробате поново за %(retry_after)s секунди."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2972,6 +3528,22 @@ msgstr "За шта сте заинтересовани?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Претплати ме на Зулипов нискофреквентни билтен (неколико е-порука годишње)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Поново поставите вашу лозинку"
@@ -3129,123 +3701,107 @@ msgid ""
 "                        "
 msgstr "\n                        Такође можете користити Зулип на рачунару.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "регистрације"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} се управо регистровао на Зулип. (укупно: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} је прихватио ваш позив да се придружи Зулипу!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "ИД поље {id} није пронађено."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' је предефинисани ток и не може бити додат у '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Предефинисана група тока '{group_name}' већ постоји"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Ток '{stream_name}' је већ присутан у предефинисаној групи тока '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Ток '{stream_name}' није присутан у предефинисаној групи тока '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "Да би заштитио кориснике, Зулип ограничава број позивница које можете послати у једном дану. Зато што сте достигли ово ограничење, ниједна позивница није послата."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Ваш налог је превише нов да би сте слали позивнице за ову организацију. Питајте администратора организације или дугогодишњег корисника."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Неке адресе е-поште нису прошле проверу тако да нисмо послали ниједну позивницу."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Нисмо успели никога да позовемо."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3275,72 +3831,72 @@ msgstr "Није могуће мењати садржај поруке уз ис
 msgid "Widgets cannot be edited."
 msgstr "Виџети се не могу мењати."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Ваша организација је искључила уређивање порука"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Немате одобрење да уређујете ову поруку"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Прошло је временско органичење за уређивање ове поруке"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} је означио ову тему као решену."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} је означио ову тему као нерешену."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "Ова тема је премештена у {new_location} од стране {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "Порука је премештена из ове теме у {new_location} од стране {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} порука је премештено из ове теме у {new_location} од стране {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "Ова тема је премештена овде из {old_location} од стране {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} порука је премештено овде из {old_location} од стране {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Ваша организација је искључила уређивање порука"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Немате одобрење да уређујете ову поруку"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Прошло је временско органичење за уређивање ове поруке"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Немате одобрење да преместите ову поруку"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr "Временско ограничење за измену порука овог тока је истекло"
 
@@ -3359,137 +3915,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Неисправна порука(е)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Није могуће приказати поруку"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Очекиван је тачно један ток"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Неисправан тип података за ток"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Неисправан тип података за примаоце"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Списак прималаца може да садржи адресе е-поште или ИД корисника, али не оба."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Ваш бот {bot_identity} је покушао да пошаље поруку у ток са ИД {stream_id}, али нема тока са тим ИД-ом."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Ваш бот {bot_identity} је покушао да пошаље поруку у ток {stream_name}, али тај ток не постоји. Кликните [овде]({new_stream_link}) да би сте га направили."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Ваш бот {bot_identity} је покушао да пошаље поруку у ток {stream_name}. Ток постоји али нема ниједног претплатника."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr "Директне поруке су онемогућене у овој организацији."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Теме су обавезне у овој организацији"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Виџети: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Већ постоји прилагођени емотикон са овим именом."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr "Заказана порука је већ послата"
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr "Време заказане доставе мора бити у будућности."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr "Порука није могла бити послата у заказано време."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr "Порука коју сте заказали за {delivery_datetime} није послата због следеће грешке:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr "Ток је већ деактивиран"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr "Ток тренутно није деактивиран"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr "Ток са називом {stream_name} већ постоји"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} је променио [дозволе приступа](/help/stream-permissions) за овај ток из **{old_policy}** у **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3498,38 +4059,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} је променио [дозволе обајвљивања](/help/stream-sending-policy) за овај ток:\n\n* **Старе дозволе**: {old_policy}.\n* **Нове дозволе**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} је преименовао ток {old_stream_name} у {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Нема описа."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} је променио опис овог тока."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Стари опис"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Нови опис"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Заувек"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Поруке у овом току ће сада бити сачуване заувек."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3543,7 +4104,7 @@ msgstr "{user} је променио [период чувања порука](/h
 msgid "You cannot attach a submessage to this message."
 msgstr "Не можете прикачити потпоруку овој поруци."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3553,187 +4114,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr "Корисничка група '{group_name}' већ постоји."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Налог није повезан са овим поддоменом"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Мора бити администратор сервера"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Недовољне дозволе"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Неисправно заглавље ауторизације за основну ауторизацију"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Недостаје заглавље ауторизације за основну ауторизацију"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Ваш налог {username} је деактивиран. Молим вас контактирајте администратора ваше организације да би сте га реактивирали."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Лозинка је превише слаба."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Поддомен мора бити дужине 3 или дужи."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Поддомен не може почети са '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Поддомен може садржати само мала слова, бројеве и '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr "Поддомен је већ у употреби. Молим вас изаберите неки други."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr "Поддомен је резервисан. Молим вас изаберите неки други."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Молим вас користите вашу праву адресу е-поште."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Не постоји организација којој покушавате да приступите користећи {email}."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Молим вас затражите позивницу за {email} од администратора организације."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Ваша адреса е-поште, {email}, није једна од домена којима је дозвољено да региструју налоге у овој организацији."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Адресе е-поште које садрже + нису дозвољене у овој организацији."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Нови чланови не могу да приступе овој организацији јер су све Зулип лиценце искоришћене. Молим вас контактирајте особу која вас је позвала и замолите их да повећају број лиценци, а затим покушате поново."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Нова лозинка"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Потврда нове лозинке"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Ваша лозинка је онемогућена јер је превише слаба. Ресетујте лозинку да би сте направили нову."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Токен"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Молим вас унесите највише 10 е-адреса."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Нисмо могли да пронађемо ту Зулип организацију."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Неисправна е-пошта '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Недостаје тема"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Није могуће слање на више токова"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Недостаје ток"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Порука мора имати примаоце"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Неисправан тип поруке"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Неисправан прилог"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Појавила се грешка при брисању прилога. МОлим вас покушајте поново касније."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Порука мора имати примаоце!"
 
@@ -3790,88 +4351,88 @@ msgstr "Корисник је онемогућио синхронизацију
 msgid "Draft does not exist"
 msgstr "Нацрт не постоји"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Отворите Зулип да би сте видели скривени садржај"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Неисправна адреса."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Изван вашег домена."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Адресе е-поште које садрже + нису дозвољене."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Резервисано за системске ботове."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} већ има налог"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Већ има налог."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Налог је деактивиран."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr "Емотикон '{emoji_name}' не постоји"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Неисправан прилагођени емотикон."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Неисправно име прилагођеног емотикона."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Прилагођени емотикон је деактивиран."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Неисправан код емотикона."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Неисправно име емотикона."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Неисправан тип емотикона."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Морате бити администратор организације или аутор емотикона"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr "Имена емотикона морају се завршити са словом или цифром."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr "Имена емотикона морају садржати само мала слова енглеског алфабета, цифре, размаке, цртице и доње цртице."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Недостаје име емотикона"
 
@@ -3879,119 +4440,119 @@ msgstr "Недостаје име емотикона"
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Ток '{stream}' не постоји"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Ток са ИД '{stream_id}' не постоји"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "власник организације"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "корисник"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Није могуће деактивирати једино {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Лоше формиран JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Морате бити члан организације"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Морате бити администратор организације"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Мора бити власник организације"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Ваше корисничко име или лозинка нису исправни"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Налог је деактивиран"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Ова организације је деактивирана"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "Регистрација сервиса за слање обавештења на телефонима вашег сервера је деактивирана"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Аутентификација лозинком је онемогућена у овој организацији"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Ваша лозинка је онемогућена и неопходно је ресетовати је"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Неисправан АПИ кључ"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Лоше формиран АПИ кључ"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Није могуће разлучити захтев: Да ли је {webhook_name} генерисао овај догађај?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr "Корисник није аутентификован"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Неисправан поддомен"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Приступ је одбијен"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3999,47 +4560,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Реаговање већ постоји."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Реакција не постоји."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitter корисничко име"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "GitHub корисничко име"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Прилагођени екстерни налог мора одредити шаблон адресе"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Неисправан тип екстерног налога"
 
@@ -4137,106 +4698,106 @@ msgstr "Продуктивност"
 msgid "Version control"
 msgstr "Контрола верзија"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Порука не може бити празна"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Порука не сме садржати нула бајтова"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Недостаје 'сидро' аргумент."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Неисправно сидро"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "Ако сте нови у Зулипу, погледајте наш [водич за почетнике]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Здраво и добродошли у Зулип!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr "Ово је директна порука од мене, бота добродошлице."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "Такође вам могу помоћи да све подесите! Само кликните било где на ову поруку или притисните `r` за одговор."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Ево неколико порука које разумем:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Идите на [подешавања профила](#settings/profile) да би сте додали [профилну слику](/help/change-your-profile-picture) и измените [информације о вашем профилу](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4245,119 +4806,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "У Зулипу токови [одређују ко добија поруку](/help/streams-and-topics). Они су слични каналима у другим апликацијама за ћаскање."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Прегледајте и претплатите се на токове](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "У Зулипу теме вам [говоре о чему се ради у поруци](/help/streams-and-topics). Оне су попут наслова у е-поруци."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr "Погледајте [недавне разговоре](#recent) да би сте видели шта се дешава! Можете се вратити у овај разговор кликом на \"Директне поруке\" у горњем левом углу."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Зулипове [пречице на тастатури](#keyboard-shortcuts) вам омогућавају да брзо и ефикасно управљате апликацијом."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Притисните `?` у било ком тренутку да би сте видели [списак пречица](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Зулип користи [Markdown](/help/format-your-message-using-markdown), интуитиван формат за **подебљање**, *курзив*, назначене листе и много више. Кликните [овде](#message-formatting) за преглед команди."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Погледајте наше [савете за писање порука](/help/messaging-tips) да би сте научили о реакцијама емотиконима, блоковима кода и још много тога!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Погледајте наш [водич за почетнике](/help/getting-started-with-zulip), или прегледајте [центар помоћи](/help/) да би сте научили више!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "Жао ми је, нисам разумео вашу поруку. Молим покушајте са једном од следећих команди:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Ово је приватан ток, означен са иконицом катанца поред назива тока."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Приватни токови су видљиви само члановима тока."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Да би сте управљали овим током, идите на [подешавања тока]({stream_settings_url}) и кликните на `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Ово је порука у току #**{default_notification_stream_name}** са темом `демонстрација теме`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Теме су лагани алат за добру организацију разговора."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Можете научити више о темама на [токови и теме]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Ово је порука у току #**{default_notification_stream_name}** са темом `пливајуће корњаче`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Неиспарни JSON у одговору"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Неисправан формат одговора"
 
@@ -4371,45 +4932,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Токен не постоји"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Ова организација је онемогућила приказ садржаја поруке у обавештењима на телефону"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} је поменуо @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} вас је поменуо:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} је поменуо све:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Тестирај обавештење"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Уређај није препознат"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4421,23 +4982,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr "Списак прималаца може садржати само ИД корисника"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Корисник није овлашћен за овај упит"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' више не користи Зулип."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr "Не можете слати директне поруке ван своје организације."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4457,21 +5018,21 @@ msgstr "Недостаје '{var_name}' аргумент"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Лоша вредност за '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr "Аргумент \"{name}\" није исправан JSON."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr "Заказана порука не постоји"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4508,7 +5069,7 @@ msgstr "Молим вас изаберите једно: 'ток' или 'ид_
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr "Неисправан ИД тока"
 
@@ -4522,7 +5083,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4531,7 +5092,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Јавни токови на вебу нису омогућени."
 
@@ -4563,28 +5124,28 @@ msgstr "Тема не може бити празна!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Подаци претплатника за овај ток нису доступни"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Није било могуће добити ко су претплатници приватног тока"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} није логичка вредност"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} није датум"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4595,18 +5156,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} није децимална вредност"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} је премало"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} није цео број"
@@ -4616,24 +5177,24 @@ msgstr "{var_name} није цео број"
 msgid "{var_name} is not valid JSON"
 msgstr "{var_name} није исправан JSON"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} је превелико"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} није листа"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Неисправно {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} је предугачко (ограничење: {max_length} карактера)"
@@ -4643,8 +5204,8 @@ msgstr "{var_name} је предугачко (ограничење: {max_length}
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} није текстуални садржај"
@@ -4663,21 +5224,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Величина слике превазилази ограничење."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Непознат формат анимиране слике."
 
@@ -4734,161 +5295,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Име је предугачко!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Име је прекратко!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Неисправан карактер у имену!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Неисправан формат!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Име је већ у употреби!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Лош назив или корисничко име"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Неисправни подаци конфигурације!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Неисправан тип бота"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Неисправан тип интерфејса"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Нема таквог бота"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Нема таквог корисника"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Корисник је декативиран"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} не може бити празно."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} нема исправну дужину {length}; требало би бити {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr "{var_name} није препозната временска зона"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} није исправан код хекс боје"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} би требао имати тачно {length} ставки"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} кључ недостаје из {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} је погрешно)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} није адреса"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "Шаблон адресе мора садржати '%(username)s'."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' не може бити празно."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "Поље не сме садржати дуплиране изборе."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' није исправан избор за '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} није текстуална вредност или листа целобројних вредности"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} није текстуална вредност или листа целобројних вредности"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} не садржи дужину"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} недостаје"
@@ -4922,215 +5483,211 @@ msgstr "CSRF грешка: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "догађаји тока"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Доступно на Зулип Облак стандард. Надоградите за приступ."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "GIPHY интеграција је онемогућена"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Неисправан карактер у називу емотикона"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Непозната грешка регуларног израза"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Админи, модератори, чланови и гости"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Админи, модератори и чланови"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Админи и модератори"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Само админи"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Нико"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr "Непознати корисник"
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Власник организације"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Администратор организације"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Модератор"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Члан"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Гост"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Јавно доступно"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Јавно"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Приватно, дељена историја"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Приватно, заштићена историја"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Јавна, заштићена историја"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Сви чланови тока могу да пишу"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Само администратори организације могу да пишу"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Само администратори и модератори организације могу да пишу"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Само пуни чланови организације могу да пишу"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Уникод емотикон"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Прилагођени емотикон"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Зулип додатни емотикон"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Листа опција"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Бирач особе"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Кратки текст"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Дуги текст"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Бирач датума"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Веза"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Екстерни налог"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Заменице"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Лош регуларни израз: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Непозната грешка регуларног израза"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Неисправан УРЛ шаблон."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Уникод емотикон"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Прилагођени емотикон"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Зулип додатни емотикон"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Неисправан карактер у називу емотикона"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "догађаји тока"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Доступно на Зулип Облак стандард. Надоградите за приступ."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "GIPHY интеграција је онемогућена"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Јавно доступно"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Јавно"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Приватно, дељена историја"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Приватно, заштићена историја"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Јавна, заштићена историја"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Сви чланови тока могу да пишу"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Само администратори организације могу да пишу"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Само администратори и модератори организације могу да пишу"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Само пуни чланови организације могу да пишу"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Админи, модератори, чланови и гости"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Админи, модератори и чланови"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Админи и модератори"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Само админи"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Нико"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Непознати корисник"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Власник организације"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Администратор организације"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Модератор"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Члан"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Гост"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Непозната IP адреса"
@@ -5143,20 +5700,20 @@ msgstr "непознати оперативни систем"
 msgid "An unknown browser"
 msgstr "Непознати прегледач"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Недостаје 'queue_id' аргумент"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Недостаје 'last_event_id' аргумент"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5194,41 +5751,41 @@ msgstr "Лозинка није исправна."
 msgid "User-Agent header missing from request"
 msgstr "Недостаје заглавље корисничког агента у захтеву"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Ознака не може бити празна."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Поље мора садржати барем један избор."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr "Тип поља није подржан за приказ у прегледу профила."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Неисправан тип поља."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr "Само 2 прилагођена поља профила могу бити приказана у прегледу профила."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Поље са том ознаком већ постоји."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Предефинисано прилагођено поље не може бити измењено."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5279,7 +5836,7 @@ msgstr "Морате навести барем једну адресу е-пош
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5328,19 +5885,19 @@ msgstr "Сидро може бити изузето само на крају о
 msgid "No such topic '{topic}'"
 msgstr "Нема такве теме '{topic}'"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Недостаје пошиљалац"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5356,42 +5913,46 @@ msgstr "Корисник је већ утишан"
 msgid "User is not muted"
 msgstr "Корисник није утишан"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Присутност није подржана за бот кориснике."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Клијент није проследио ниједну нову вредност."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Празно или неисправна дужина токена"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Неисправан APNS токен"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5406,62 +5967,62 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr "Потврде читања су онемогућене у овој организацији."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr "Неисправан језик '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Мора бити омогућен барем један начин аутентификације."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Мора бити демонстративна организација."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
-msgstr ""
+msgstr "Неисправан домен: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Домен {domain} је већ део ваше организације."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Ниједан унос није пронађен за домен {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Морате поставити тачно једну датотеку."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr "Само администратори могу да препишу предефинисане емотиконе."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
-msgstr ""
+msgstr "Величина постављене датотеке је већа од дозвољеног ограничења од {max_size} MiB"
 
 #: zerver/views/realm_export.py:44
 msgid "Exceeded rate limit."
-msgstr ""
+msgstr "Прекорачен је лимит брзине."
 
 #: zerver/views/realm_export.py:65
 #, python-brace-format
@@ -5478,7 +6039,7 @@ msgstr "Извоз је већ обрисан"
 
 #: zerver/views/realm_export.py:110
 msgid "Export failed, nothing to delete"
-msgstr ""
+msgstr "Извоз није успео, нема шта обрисати"
 
 #: zerver/views/realm_export.py:111
 msgid "Export still in progress"
@@ -5488,7 +6049,7 @@ msgstr "Извоз је још увек у току"
 msgid "You must upload exactly one icon."
 msgstr "Морате поставити тачно једну иконицу."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Линкификатор није пронађен."
 
@@ -5502,100 +6063,100 @@ msgstr "Неисправно игралиште"
 
 #: zerver/views/scheduled_messages.py:65
 msgid "Recipient required when updating type of scheduled message."
-msgstr ""
+msgstr "Прималац је обавезан при измени типа заказане поруке."
 
 #: zerver/views/scheduled_messages.py:70
 msgid "Topic required when updating scheduled message type to stream."
-msgstr ""
+msgstr "Тема је обавезна при измени типа заказане поруке у току."
 
 #: zerver/views/sentry.py:39
 msgid "Invalid request format"
-msgstr ""
+msgstr "Неисправан формат захтева"
 
 #: zerver/views/sentry.py:42
 msgid "Invalid DSN"
-msgstr ""
+msgstr "Неисправан DSN"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Приватни токови не могу постати предефинисани."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
-msgstr ""
+msgstr "Морате навести \"new_description\" или \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Ток већ поседује тај назив!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} вас је претплатио на ток {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} вас је претплатио на следеће токове:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Није могуће приступити току ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} је направио следеће токове: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} је направио нови ток {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "нови токови"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** ток је креирао {user_name}. **Опис:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
-msgstr ""
+msgstr "Непознато својство претплате: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
-msgstr ""
+msgstr "Није претплаћен на ток ид {stream_id}"
 
 #: zerver/views/submessage.py:38
 msgid "Invalid json for submessage"
-msgstr ""
+msgstr "Неисправан json за потпоруку"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Нисте овлашћени да прегледате ову датотеку.
"
 
 #: zerver/views/typing.py:35
 msgid "Missing stream_id"
-msgstr ""
+msgstr "Недостаје stream_id"
 
 #: zerver/views/typing.py:41
 msgid "User has disabled typing notifications for stream messages"
@@ -5603,7 +6164,7 @@ msgstr "Корисник је онемогућио обавештење за к
 
 #: zerver/views/typing.py:50
 msgid "Missing 'to' argument"
-msgstr ""
+msgstr "Недостаје 'за' аргумент"
 
 #: zerver/views/typing.py:55
 msgid "Empty 'to' list"
@@ -5613,112 +6174,112 @@ msgstr "Празна 'за' листа"
 msgid "User has disabled typing notifications for direct messages"
 msgstr "Корисник је онемогућио обавештење за куцкање за директне поруке"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
-msgstr ""
+msgstr "Ова датотека не постоји или је обрисана.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Неисправан токен"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Неисправно име датотеке"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Морате навести датотеку за постављање"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Можете поставити само једну по једну датотеку"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Нису достављени нови подаци"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
-msgstr ""
+msgstr "{user_full_name} вас је додао у групу {group_name}."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
-msgstr ""
+msgstr "{user_full_name} вас је уклонио из групе {group_name}."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Корисник {user_id} је већ члан ове групе"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
-msgstr ""
+msgstr "Нема члана '{user_id}' у овој корисничкој групи"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "Корисничка група {group_id} је већ подгрупа ове групе."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
-msgstr ""
+msgstr "Корисничка група {user_group_id} је већ подгрупа једне од наведених подгрупа."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "Корисничка група {group_id} није подгрупа ове групе."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Промена сличица није омогућена у овој организацији."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Промена адресе е-поште је онемогућена у овој организацији."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
-msgstr ""
+msgstr "Неисправан default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
-msgstr ""
+msgstr "Несиправан звук обавештења '{notification_sound}'"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Вашом Зулип лозинком се управља кроз LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Погрешна лозинка!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
-msgstr ""
+msgstr "Покушавате превише често! Покушајте поново за {seconds} секунди."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Нова лозинка је превише слаба!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Можете поставити тачно један аватар."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Тема није утишана"
 
@@ -5763,7 +6324,7 @@ msgstr "Корисничко име је већ у употреби"
 
 #: zerver/views/users.py:696
 msgid "User not authorized to create users"
-msgstr ""
+msgstr "Корисник није овлашћен да прави кориснике"
 
 #: zerver/views/users.py:711
 #, python-brace-format
@@ -5779,43 +6340,43 @@ msgstr "Привремене адресе е-поште нису дозвоље
 msgid "Email '{email}' already in use"
 msgstr "Е-пошта '{email}' је већ у употреби"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Неисправан Zoom приступни токен"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom креденцијали нису подешени"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Неисправан Zoom идентификатор сесије"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Неисправни Zoom креденцијали"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Није успело успостављање Zoom позива"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton није подешен."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Неисправан потпис."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Грешка при повезивању са BigBlueButton сервером."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Грешка при аутентификацији са BigBlueButton сервером."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton сервер је вратио неочекивану грешку."
 
@@ -5837,7 +6398,7 @@ msgstr ""
 
 #: zerver/webhooks/circleci/view.py:83
 msgid "Projects using this version control system provider aren't supported"
-msgstr ""
+msgstr "Пројекти који користе овај провајдер контроле верзија нису подржани"
 
 #: zerver/webhooks/freshstatus/view.py:99
 #: zerver/webhooks/uptimerobot/view.py:58 zerver/webhooks/zabbix/view.py:50
@@ -5848,11 +6409,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr "Непознат захтев веб закачке"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Тема не може бити празна"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Садржај не може бити празан"
 
@@ -5879,7 +6440,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5896,83 +6457,105 @@ msgstr "Порука са Slack-а"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
-msgstr ""
+msgstr "Извоз ваших података је завршен. [Прегледај и преузми извоз]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
-msgstr ""
+msgstr "Морате потврдити за исправним АПИ кључем Зулип сервера"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Неисправан UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Неисправна врста токена"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
+msgstr "{hostname} није исправно име за домаћина"
+
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
-msgstr ""
+msgstr "Недостаје ios_app_id"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
+msgstr "Недостаје user_id или user_uuid"
+
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
-msgstr ""
+msgstr "Неисправно својство {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
-msgstr ""
+msgstr "Неисправан тип догађаја."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Подаци нису правилно сложени."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
-msgstr ""
+msgstr "Откривена је дуплирана регистрација."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Морате да ресетујете вашу лозинку."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Неисправан OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/sr/translations.json b/locale/sr/translations.json
index 4a6c2efe3c..2bbb580604 100644
--- a/locale/sr/translations.json
+++ b/locale/sr/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(закачена датотека)",
   "(forever)": "(заувек)",
   "(hidden)": "(сакривено)",
-  "(no description)": "(нема описа)",
   "(no topic)": "(нема теме)",
   "(or )": "(или )",
   "(you)": "(ви)",
   "({message_retention_days} days)": "({message_retention_days} дана)",
   "/dark (Switch to the dark theme)": "/dark (Пребацује у тамну тему)",
   "/light (Switch to light theme)": "/light (Пребацује у светлу тему)",
-  "/me is excited (Display action text)": "/me је узбуђен (Приказује текст активности)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Где ћемо данас на ручак? (Направи анкету)",
-  "/todo (Create a todo list)": "/todo (Направи списак обавеза)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 дан",
   "1 hour": "1 сат",
   "1 week": "1 недеља",
@@ -28,7 +27,7 @@
   "6 hours": "6 сати",
   "Total messages: {total_messages}": "Укупно порука: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} датотека ће бити уклоњен из свих порука где је подељена. Ова акција не може бити поништена.
",
-  "Stream will be announced in #{notifications_stream}.
": "Ток ће бити најављен у #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Тражите поруке послате од више од једне особе, што није могуће.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "Тражите поруке које припадају у више од једног тока, што није могуће.
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "Тражите поруке које припадају у више од једне теме, што није могуће.
",
@@ -76,6 +75,7 @@
   "Activity unknown": "Активност није позната",
   "Add": "Додај",
   "Add GIF": "Додај ГИФ",
+  "Add a description": "",
   "Add a new alert word": "Додајте нову реч за упозорење",
   "Add a new bot": "Додајте новог бота",
   "Add a new code playground": "Додајте ново игралиште за код",
@@ -207,6 +207,7 @@
   "Bot": "Бот",
   "Bot email": "Е-пошта бота",
   "Bot email (a-z, 0-9, and dashes only)": "Е-пошта бота (само a-z, 0-9 и цртице)",
+  "Bot is deactivated": "",
   "Bot owner": "Власник бота",
   "Bot type": "Врста бота",
   "Bots": "Ботови",
@@ -257,7 +258,7 @@
   "Close this dialog window": "Затвори овај прозор",
   "Code": "Код",
   "Code playgrounds": "Игралиште за код",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "Игралишта за код су интерактивна развојна окружења у оквиру прегледача, попут replit, која су дизајнирана да би се олакшала измена и исправка кода. Зулипови блокови кода који су означени са програмским језиком ће додати дугме при преласку мишем које ће омогућити корисницима да блок кода отворе на сајту игралишта за код.",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Скупи писање",
   "Collapse direct messages": "Скупи директне поруке",
   "Collapse message": "Скупи поруку",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Подесите методе аутентификације за вашу организацију.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Подесите предефинисане токове у које се учлањују нови корисници када приступају вашој организацији.",
   "Confirm": "Потврди",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Размислите о претрази свих јавних токова.",
   "Contact a moderator to resolve this topic.": "Контактирајте модератора да био сте решили ову тему.",
   "Contact a moderator to unresolve this topic.": "Контактирајте модератора да био сте поништили решење ове теме.",
@@ -292,6 +294,7 @@
   "Copy code": "Ископирај код",
   "Copy link": "Ископирај везу",
   "Copy link to message": "Ископирај везу до поруке",
+  "Copy link to profile": "",
   "Copy link to topic": "Ископирај везу до теме",
   "Copy mention syntax": "Ископирај синтаксу помињања",
   "Copy version": "Ископирај верзију",
@@ -358,6 +361,7 @@
   "Delete all drafts": "Обриши све нацрте",
   "Delete all selected drafts": "Обриши све изабране нацрте",
   "Delete code playground?": "Обрисати игралиште за код?",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "Обриши прилагођено поље профила?",
   "Delete data export?": "Обриши извоз података?",
   "Delete draft": "Обриши нацрт",
@@ -413,7 +417,6 @@
   "Domain": "Домен",
   "Don’t allow disposable email addresses": "Не дозвољавај привремене адресе е-поште",
   "Download": "Преузми",
-  "Download .zuliprc": "Преузми .zuliprc",
   "Download botserverrc": "Преузми botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Преузми подешавање свих активних ботова одлазних веб закачки у Зулип ботсервер формату.",
   "Download file": "Преузми датотеку",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "Образовна (профитна)",
   "Education (non-profit)": "Образовна (непрофитна)",
   "Effect": "Ефекат",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Е-пошта",
   "Email address": "Адреса е-поште",
   "Email address changes are disabled in this organization.": "Промена адресе е-поште је онемогућена у овој организацији.",
@@ -550,7 +554,7 @@
   "Follow": "Прати",
   "Followed": "Праћен",
   "Followed topics": "Праћене теме",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "На пример, да би сте подесили игралиште за код за блокове кода означене као Python, можете подесити:",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "За више примера и техничке детаље, погледајте документацију центра помоћи за додавање игралишта за код.",
   "For more examples, see the help center documentation on adding linkifiers.": "За више примера, погледајте документацију центра помоћи за додавање линкификатора.",
   "Forgot it?": "Заборави га?",
@@ -606,6 +610,8 @@
   "Image": "Слика",
   "In a meeting": "На састанку сам",
   "In muted streams, stream notification settings apply only to unmuted topics.": "У утишаним токовима, подешавања обавештења тока се примењују само на неутишане теме.",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Неактиван",
   "Inactive bots": "Неактивни ботови",
   "Inbox": "Пријемно сандуче",
@@ -704,9 +710,11 @@
   "Manage this bot": "Управљајте овим ботом",
   "Manage this user": "Управљајте овим корисником",
   "Manage user": "Управљајте корисником",
+  "Manage your API key": "",
   "March": "Март",
   "Mark all messages as read": "Означи све поруке као прочитане",
   "Mark all messages as read?": "Означити све поруке као прочитане?",
+  "Mark all messages as unread": "",
   "Mark as read": "Означи као прочитане",
   "Mark as resolved": "Означи као решено",
   "Mark as unread from here": "Означи као непрочитане од ове",
@@ -722,6 +730,7 @@
   "Mentioned in": "Поменута у",
   "Mentions": "Помињања",
   "Menus": "Менији",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Пошаљите поруку на #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Пошаљите поруку на #{stream_name} > {topic_name}",
   "Message actions": "Акције над поруком",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Пошаљите поруку на {recipient_label}",
   "Message {recipient_names}": "Пошаљите поруку за {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Пошаљите поруку за {recipient_name} ({recipient_status})",
+  "Messages": "Поруке",
   "Messages in all public streams": "Поруке у свим јавним токовима",
   "Messages sent by you": "Поруке које сте ви послали",
   "Messages sent by {sender}": "Поруке које је послао {sender}",
@@ -805,6 +815,7 @@
   "Never expires": "Никада не истиче",
   "New": "Нов",
   "New direct message": "Нова директна порука",
+  "New direct message from {sender_full_name}": "",
   "New email": "Нова е-пошта",
   "New message": "Нова порука",
   "New option": "Нова опција",
@@ -821,25 +832,20 @@
   "Next unread direct message": "Следећа непрочитана директна порука",
   "Next unread followed topic": "Следећа непрочитана праћена тема",
   "Next unread topic": "Следећа непрочитана тема",
-  "No bots found.": "Није пронађен ниједан бот.",
+  "No active users.": "",
   "No bots match your current filter.": "Ниједан бот се не поклапа са тренутним филтером.",
   "No conversations match your filters.": "Ниједан разговор се не поклапа са вашим филтерима.",
-  "No custom emojis found.": "Није пронађен ниједан прилагођен емотикон.",
   "No custom emojis match your current filter.": "Ниједан прилагођени емотикон се не поклапа са вашим тренутним филтерима.",
   "No custom profile field configured for this organization.": "Ниједно прилагођено поље профила није подешено за ову организацију.",
-  "No deactivated users found.": "Није пронађен ниједан деактивиран корисник.",
-  "No default streams found.": "Није пронађен ниједан предефинисани ток.",
   "No default streams match your current filter.": "Ниједан подразумевани ток се не поклапа са вашим тренутним филтером.",
   "No description.": "Нема описа.",
   "No drafts selected": "Ниједан нацрт није изабран",
   "No drafts.": "Нема нацрта.",
-  "No exports found.": "Ниједан извоз није пронађен.",
   "No group members match your current filter.": "Ниједан члан групе се не поклапа са вашим тренутним филтером.",
-  "No invites found.": "Ниједна позивница није пронађена.",
   "No invites match your current filter.": "Ни једна позивница се не поклапа са тренутним филтером.",
   "No language set": "Није изабран језик",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "Ниједан линкификатор се не поклапа са тренутним филтером.",
-  "No linkifiers set.": "Нису подешени линкификатори.",
   "No matching results": "Нема резултата који се поклапају",
   "No matching streams": "Нема токова који се поклапају",
   "No matching users.": "Нема корисника који се поклапају.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Ниједна тема није означена као решена.",
   "No topics match your current filter.": "Ниједна тема се не поклапа са тренутним филтером.",
   "No uploaded files match your current filter.": "Ниједна прикачена датотека се не поклапа са тренутним филтером.",
+  "No user found": "",
   "No user group subscriptions.": "Нема чланства у корисничким групама.",
   "No user groups": "Нема корисничких група",
   "No user to subscribe.": "Нема корисника за чланство.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "Нико у овој Зулип организацији неће моћи да види ову адресу е-поште.",
   "Non-profit (registered)": "Непрофитна (регистрована)",
   "None": "Ништа",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Имајте на уму да ће сви ботови које ви одржавате бити онемогућени.",
   "Note that organizations are limited to five exports per week.": "Имајте на уму да су организације ограничене на пет извоза недељно.",
   "Nothing to preview": "Ништа за преглед",
@@ -932,6 +940,7 @@
   "Other permissions": "Остале дозволе",
   "Other settings": "Остала подешавања",
   "Other users in this Zulip organization will be able to see this email address.": "Остали корисници ове Зулип организације ће моћи да виде ову адресу е-поште.",
+  "Others": "",
   "Out sick": "На боловању",
   "Outgoing webhook message format": "Формат поруке одлазних веб закачки",
   "Override default emoji?": "Преснимити предефинисани емотикон?",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Захтевај теме у порукама токова",
   "Research": "Истраживачка",
   "Resend": "Поново пошаљи",
-  "Resend invitation": "Поново пошаљи позивницу",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Поновно слање је наишло на грешку. Поново учитајте и покушајте поново",
+  "Reset to default notifications": "",
   "Reset zoom": "Поништи зумирање",
   "Restore draft": "Поврати нацрт",
   "Restrict email domains of new users?": "Ограничити домене е-поште за нове кориснике?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Претражите  у темама или садржајима порука.",
   "Search people": "Претражите особе",
   "Search results": "Резултати претраге",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Погледајте како да подесите е-пошту.",
   "Select a stream": "Изабери ток",
   "Select a stream below or change topic name.": "Изаберите ток испод или промените назив теме.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Прикажи број порука са звездицом",
   "Show status text": "Прикажи текст статуса",
   "Show unread counts for": "Прикажи број непрочитаних за",
-  "Show/change your API key": "Прикажи/измени ваш АПИ кључ",
   "Showing messages since {time_string}.": "Приказане поруке новије од {time_string}.",
   "Sign up": "Региструјте се",
   "Silent mentions do not trigger notifications.": "Тиха помињања не окидају обавештења.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "Адреса е-поште пошиљаоца",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "Ток #{stream_name} не постоји. Управљајте вашим претплатама на страници ваших Токова.",
   "The stream description cannot contain newline characters.": "Опис тока не сме садржати карактере за нови ред.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Њихове лозинке ће бити обрисане из нашег система, и сви ботови које они одржавају ће бити онемогућени.",
   "Theme": "Тема",
+  "There are no bots.": "",
   "There are no current alert words.": "Тренутно нема речи за упозорење.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "Овде нема порука.",
   "There are no streams you can view in this organization.": "Нема токова у овој организацији које можете видети.",
   "There are no unread messages in your inbox.": "Нема непрочитаних порука у вашем пријемном сандучету.",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "Бот не може бити деактивиран.",
   "This bot cannot be edited.": "Бот не може бити измењен.",
   "This bot has been deactivated.": "Овај бот је деактивиран.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "Овај разговор можда садржи додатне поруке које нису приказане у овом приказу.",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Ова демонстративна организација ће аутоматски бити обрисана за {days_remaining} дана, осим ако се не конвертује у сталну организацију.",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "Ова функционалност је доступна за Зулип Облак Плус. Надоградите за приступ.",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "Ово ће обрисати  поље профила за  корисника.",
   "This will delete the  profile field for 1 user.": "Ово ће обрисати  поље профила за 1 корисника.",
   "This will delete the  profile field for  users.": "Ово ће обрисати  поље профила за  корисника.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Четвртак",
   "Time": "Време",
   "Time format": "Формат времена",
@@ -1240,6 +1259,7 @@
   "Today": "Данас",
   "Today at {time}": "Данас у {time}",
   "Toggle first emoji reaction on selected message": "Намести прву реакцију емотиконом на изабрану поруку",
+  "Toggle preview mode": "",
   "Toggle subscription": "Промени чланство",
   "Toggle the gear menu": "Промени мени зупчаника",
   "Toggle topic mute": "Промени утишање теме",
@@ -1438,9 +1458,10 @@
   "You do not have permission to add other users to streams in this organization.": "Немате овлашћење да додате друге кориснике у токове ове организације.",
   "You do not have permission to join this group.": "Немате овлашћења да приступите овој групи.",
   "You do not have permission to leave this group.": "Немате овлашћења да напустите ову групу.",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Немате овлашћење да преместите неке поруке у овој теми. Контактирајте модератора да би сте преместили све поруке.",
   "You do not have permission to post in this stream.": "Немате дозволу да пишете у овом току.",
-  "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
+  "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "Немате овлашћења да решавате теме са порукама старијим од {N, plural, one {# једног дана} other {# дана}} у овој организацији.",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# hour} other {# hours}} in this organization.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# minute} other {# minutes}} in this organization.": "",
   "You do not have permission to unresolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1454,7 +1475,7 @@
   "You follow this topic": "Пратите ову тему",
   "You get": "Добијате",
   "You have at least {unread_msgs_count} unread messages.": "Имате најмање {unread_msgs_count} непрочитаних порука.",
-  "You have {scheduled_message_count, plural, =1 {1 scheduled message} other {# scheduled messages}} for this conversation.": "",
+  "You have {scheduled_message_count, plural, =1 {1 scheduled message} other {# scheduled messages}} for this conversation.": "Имате {scheduled_message_count, plural, =1 {1 заказану поруку} other {# заказаних порука}} за овај разговор.",
   "You have {unread_msgs_count} unread messages.": "Имате {unread_msgs_count} непрочитаних порука.",
   "You have mentions": "Помињани сте",
   "You have muted .": "Утишали сте .",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "Зулип сервер {display_version}",
   "Zulip Server {display_version} (modified)": "Зулип сервер {display_version} (измењен)",
   "Zulip Server {display_version} (patched)": "Зулип сервер {display_version} (закрпљен)",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "Зулип вам омогућава да подесите обавештења за сваку тему. Можете аутоматски пратити или озвучити теме које започнете или у којима учествујете.",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "Зулип вам омогућава да утишате теме и токове како би сте избегли примање порука обавештења за која нисте заинтересовани. Утишавање тока ефективно утишава све теме у том току. Такође можете ручно утишати тему у озвученом току, или озвучити тему у утишаном току. Сазнајте више.",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Зулип мора да пошаље е-поруку да би потврдио корисничку адресу и слао обавештења.",
   "Zulip needs your permission to enable desktop notifications.": "Зулипу је потребна ваша дозвола да би омогућио приказ обавештења на рачунару.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Зулип преводи су допринос наше предивне заједнице преводиоца волонтера. Ако желите да помогнете, погледајте водич за превод Зулипа.",
@@ -1541,6 +1561,9 @@
   "more topics": "више тема",
   "she/her": "она/њу",
   "they/them": "они/њих",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {Завршено! {N} порука означена као прочитана.} few {Завршено! {N} порука означено као прочитано.} other {Завршено! {N} порука означено као прочитано.}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {Завршено! {N} порука означена као прочитана.} few {Завршено! {N} порука означено као прочитано.} other {Завршено! {N} порука означено као прочитано.}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {Корисник је успешно позван.} few {Корисници су успешно позвани.} other {Корисници су успешно позвани.}}",
diff --git a/locale/sv/LC_MESSAGES/django.po b/locale/sv/LC_MESSAGES/django.po
index 978c20ba4c..916cea1e2e 100644
--- a/locale/sv/LC_MESSAGES/django.po
+++ b/locale/sv/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Sven Stark , 2020\n"
 "Language-Team: Swedish (http://app.transifex.com/zulip/zulip/language/sv/)\n"
@@ -18,57 +18,51 @@ msgstr ""
 "Language: sv\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Ej tillåtet för gäster"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "ogiltig organisation"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Publika strömmar"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Privata strömmar"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Direktmeddelanden"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Gruppera direktmeddelanden"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Inga anlysdata tillgängliga. Var god kontakta serverns administratör."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -77,7 +71,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -86,7 +80,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -95,7 +89,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -104,7 +98,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -113,11 +107,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -133,124 +127,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Något gick fel. Uppdatera sidan."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Något gick fel. Vänta några sekunder och försök igen."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -258,54 +252,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Fel"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -314,8 +315,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -420,7 +454,7 @@ msgstr "Aktive senaste 15 dagarna"
 msgid "Total users"
 msgstr "Totalt antal användare"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Användare"
 
@@ -560,36 +594,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Fakturering"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Avbryt"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -611,6 +741,451 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -630,11 +1205,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -649,12 +1220,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Skapa organisation"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -687,51 +1258,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -747,14 +1315,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -802,7 +1362,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Gå med"
 
@@ -835,8 +1395,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Logga In"
 
@@ -869,26 +1429,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Försök nu."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Meddelanden"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1111,21 +1667,21 @@ msgstr "Gästanvändare"
 msgid "Normal users"
 msgstr "Vanliga anävndare"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Stäng"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Uppdatering"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2348,7 +2904,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2368,7 +2924,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2378,12 +2943,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Sök konton"
 
@@ -2415,7 +2980,7 @@ msgstr "Integreringar"
 msgid "Desktop & mobile apps"
 msgstr "Dator- och mobilappar"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2783,12 +3348,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2797,11 +3358,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2970,6 +3526,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3127,123 +3699,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3273,72 +3829,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3357,137 +3913,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3496,38 +4057,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3541,7 +4102,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3551,187 +4112,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Nytt lösenord"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3788,88 +4349,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3877,119 +4438,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3997,47 +4558,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4135,106 +4696,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4243,119 +4804,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4369,45 +4930,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4419,23 +4980,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4455,21 +5016,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4506,7 +5067,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4520,7 +5081,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4529,7 +5090,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4561,28 +5122,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4593,18 +5154,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4614,24 +5175,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4641,8 +5202,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4661,21 +5222,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4732,161 +5293,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4920,215 +5481,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Bara admins"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Publik"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "egna emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "egna emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Publik"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Bara admins"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5141,20 +5698,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5192,41 +5749,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5277,7 +5834,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5326,19 +5883,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5354,42 +5911,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5404,55 +5965,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5486,7 +6047,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5514,71 +6075,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5587,7 +6148,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5611,112 +6172,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5777,43 +6338,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5846,11 +6407,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5877,7 +6438,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5894,83 +6455,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/sv/translations.json b/locale/sv/translations.json
index c75c09c264..06c78cc904 100644
--- a/locale/sv/translations.json
+++ b/locale/sv/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(inget ämne)",
   "(or )": "",
   "(you)": "(du)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "/jag är exalterad (Visa handlingstext)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/fråga Var ska vi äta lunch idag? (Skapa en fråga)",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 dag",
   "1 hour": "1 timme",
   "1 week": "1 vecka",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Lägg till",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "Lägg till ett nu varningsord",
   "Add a new bot": "Lägg till en ny bot",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "Bot mejl",
   "Bot email (a-z, 0-9, and dashes only)": "Bot mejl (a-z, 0-9 och enbart bindestreck)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Bot-typ",
   "Bots": "Bottar",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Ställ in autentifieringsmetod för din organisation.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Ställ in förinställda strömmar som nya användare prenumererar på när man läggs till under organisationen.",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Tabort utkast",
@@ -413,7 +417,6 @@
   "Domain": "Domän",
   "Don’t allow disposable email addresses": "Tillåt inte engångsepostadresser",
   "Download": "Ladda ner",
-  "Download .zuliprc": "Ladd ner .zuliprc",
   "Download botserverrc": "Ladda ner botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Ladda ner konfiguration för alla aktiva utgående webhook bottar i Zulip Botserver-formatet.",
   "Download file": "Ladda ner fil",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Effekt",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Mejl",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Bild",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Inaktiva botar",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Omnämnanden",
   "Menus": "Menyer",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "Meddelandealternativ",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "Meddelanden",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "Ny",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "Nytt meddelande",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Nästa olästa ämne",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Återställa utkast",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Sök personer",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Se hur du kan ställa in mejl.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "Gå med",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Torsdag",
   "Time": "Tid",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "Idag",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "Växla kugghjulsmenyn",
   "Toggle topic mute": "Växla tyst ämne",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip behöver skicka mejl för att bekräfta användares mejladresser och skicka notiser",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/ta/LC_MESSAGES/django.po b/locale/ta/LC_MESSAGES/django.po
index 593f62dffd..1a37d920a8 100644
--- a/locale/ta/LC_MESSAGES/django.po
+++ b/locale/ta/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-15 17:44+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2018-04-11 21:06+0000\n"
 "Last-Translator: Tim Abbott \n"
 "Language-Team: Tamil (http://www.transifex.com/zulip/zulip/language/ta/)\n"
@@ -18,66 +18,58 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630 zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645 zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr ""
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 #, fuzzy
 #| msgid "All streams"
 msgid "Public streams"
 msgstr "அனைத்து தகவலரங்கங்கள்"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 #, fuzzy
 #| msgid "Private messages"
 msgid "Private streams"
 msgstr "தனிப்பட்ட செய்தி"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 #, fuzzy
 #| msgid "Private messages"
 msgid "Direct messages"
 msgstr "தனிப்பட்ட செய்தி"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 #, fuzzy
 #| msgid "Private messages"
 msgid "Group direct messages"
 msgstr "தனிப்பட்ட செய்தி"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-#, fuzzy
-#| msgid "Enable notifications"
-msgid "Invalid parameters"
-msgstr "அறிவிப்புகளை இயக்கு"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -86,7 +78,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -94,7 +86,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than one user to join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -102,7 +94,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than two users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase "
@@ -110,7 +102,7 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow more than three users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -119,11 +111,11 @@ msgid ""
 "({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -141,126 +133,126 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this "
 "page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr ""
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr ""
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new "
 "plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 #, fuzzy
 #| msgid "Administrators"
 msgid "No customer for this organization!"
 msgstr "நிர்வாகிகள்"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2901
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You "
@@ -270,54 +262,63 @@ msgid ""
 "we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:136
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:138
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:275
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for "
+"assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:280
-#: corporate/views/remote_billing_page.py:693
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:506
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:513
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:517
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+#, fuzzy
+#| msgid "Enable notifications"
+msgid "Invalid parameters"
+msgstr "அறிவிப்புகளை இயக்கு"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -327,8 +328,45 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to "
+"authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for "
+"this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or "
+"extensions\n"
+"                            that block Referer headers, and disable them "
+"for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -441,7 +479,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr ""
 
@@ -583,40 +621,144 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:313 templates/corporate/billing.html:339
-#: templates/corporate/billing.html:368 templates/corporate/billing.html:397
-#: templates/corporate/billing.html:423
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 #, fuzzy
 #| msgid "Close"
 msgid "Close modal"
 msgstr "மூடு"
 
-#: templates/corporate/billing.html:324 templates/corporate/billing.html:353
-#: templates/corporate/billing.html:382
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "இரத்து"
 
-#: templates/corporate/billing.html:326 templates/corporate/billing.html:410
-#: templates/corporate/billing.html:433
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:355 templates/corporate/billing.html:384
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 #, fuzzy
 #| msgid "Confirm password"
 msgid "Confirm"
 msgstr "கடவுச்சொல்லை உறுதிப்படுத்துக"
 
-#: templates/corporate/billing.html:408 templates/corporate/billing.html:431
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+#, fuzzy
+#| msgid "Cancel"
+msgid "Cancel upgrade"
+msgstr "இரத்து"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already "
+"on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available "
+"because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -638,6 +780,453 @@ msgstr ""
 msgid "All"
 msgstr ""
 
+#: templates/corporate/comparison_table_integrated.html:103
+#, fuzzy
+#| msgid "Private messages"
+msgid "10,000 messages"
+msgstr "தனிப்பட்ட செய்தி"
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -657,11 +1246,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -676,12 +1261,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -714,107 +1299,52 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:4
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:16
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:4
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:16
-msgid "Plan management not available"
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:18
-#, python-format
-msgid ""
-" Plan management is not available for this\n"
-"                        organization, because your Zulip server is already "
-"on a\n"
-"                        %(server_plan_name)s plan, which covers all\n"
-"                        organizations on this server. Follow the log\n"
-"                        in instructions\n"
-"                        for All older versions\n"
-"                        of the Zulip server to manage your plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_realm_login_error_for_server_on_active_plan.html:29
-msgid ""
-" To move the plan from the server to this\n"
-"                        organization, or for other questions, contact support.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:18
-msgid ""
-"\n"
-"                        Plan management for this server is not available "
-"because at least one organization\n"
-"                        hosted on this server already has an active plan.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/remote_server_login_error_for_any_realm_on_active_plan.html:24
-#, python-format
-msgid ""
-"\n"
-"                        Log in to plan management for your\n"
-"                        organization instead, or contact support with any questions.\n"
-"                        "
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 #, fuzzy
 #| msgid "Administrators"
 msgid "Organization"
 msgstr "நிர்வாகிகள்"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 #, fuzzy
 #| msgid "Private messages"
 msgid "Message"
 msgstr "தனிப்பட்ட செய்தி"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -832,14 +1362,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr "சுலிப்பு"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -890,7 +1412,7 @@ msgid "Continue"
 msgstr ""
 
 #: templates/zerver/accounts_home.html:5 templates/zerver/accounts_home.html:72
-#: templates/zerver/login.html:154 templates/zerver/portico-header.html:43
+#: templates/zerver/login.html:154 templates/zerver/portico-header.html:46
 #: templates/zerver/register.html:234
 msgid "Sign up"
 msgstr ""
@@ -923,8 +1445,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "புகுபதிகை செய்"
 
@@ -958,28 +1480,22 @@ msgid ""
 "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-#, fuzzy
-#| msgid "Private messages"
-msgid "Messages"
-msgstr "தனிப்பட்ட செய்தி"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1213,21 +1729,21 @@ msgstr ""
 msgid "Normal users"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "மூடு"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "சுலிப்பு"
 
@@ -2516,7 +3032,17 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email "
+"address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the "
@@ -2529,12 +3055,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr ""
 
@@ -2568,7 +3094,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2941,12 +3467,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2955,11 +3477,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 #, fuzzy
@@ -3140,6 +3657,24 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated "
+"with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact "
+"Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3311,127 +3846,110 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated "
-"with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact "
-"Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
-#, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr ""
+#: zerver/actions/create_user.py:110
+#, fuzzy, python-brace-format
+#| msgid "Administrators"
+msgid "{user} joined this organization."
+msgstr "நிர்வாகிகள்"
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid default stream group name '{group_name}'"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid default stream group {group_name}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one "
 "day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3465,72 +3983,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3551,140 +4069,145 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but "
 "that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The "
 "stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 #, fuzzy
 #| msgid "Administrators"
 msgid "Direct messages are disabled in this organization."
 msgstr "நிர்வாகிகள்"
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 #, fuzzy
 #| msgid "Administrators"
 msgid "Topics are required in this organization"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88 zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for "
@@ -3694,38 +4217,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-"
@@ -3740,7 +4263,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid user ID {user_id}"
@@ -3751,190 +4274,190 @@ msgstr "அறிவிப்புகளை இயக்கு"
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 #, fuzzy
 #| msgid "Password"
 msgid "New password"
 msgstr "கடவுச்சொல்"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid email '{email}'"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr ""
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3991,89 +4514,89 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "{service_name} notifications"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -4081,176 +4604,176 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 #, fuzzy
 #| msgid "Administrators"
 msgid "organization owner"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 #, fuzzy
 #| msgid "Administrators"
 msgid "Must be an organization member"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 #, fuzzy
 #| msgid "Topic"
 msgid "User not authenticated"
 msgstr "தலைப்பு"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the {total_messages_allowed_to_move}/"
 "{total_messages_in_topic} most recent messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 #, fuzzy
 #| msgid "Administrators"
 msgid "Organization not registered"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 #, fuzzy
 #| msgid "Username"
 msgid "GitHub username"
 msgstr "பயனர்பெயர்"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4350,106 +4873,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a "
 "member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started guide]"
 "({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a class]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your organization]"
 "({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press "
 "`r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also "
 "works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/"
 "change-your-profile-picture) and edit your [profile information](/help/edit-"
 "your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji theme](/help/emoji-"
@@ -4457,119 +4980,119 @@ msgid ""
 "your-language), and make other tweaks to your Zulip experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of "
 "an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and topics]"
 "({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the "
 "topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid response format"
@@ -4588,47 +5111,47 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
 #. error
-#: zerver/lib/push_notifications.py:739 zilencer/views.py:241
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:910
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1023
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1027
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1034
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1438
+#: zerver/lib/push_notifications.py:1454
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Test notification"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/push_notifications.py:1439
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1490
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1502
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4642,23 +5165,23 @@ msgstr "அறிவிப்புகளை இயக்கு"
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4678,21 +5201,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4729,7 +5252,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid stream ID"
@@ -4746,7 +5269,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4755,7 +5278,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4789,28 +5312,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4821,18 +5344,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4842,25 +5365,25 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid {var_name}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4870,8 +5393,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4891,21 +5414,21 @@ msgstr "அறிவிப்புகளை இயக்கு"
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4963,164 +5486,164 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid integration '{integration_name}'."
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid {key} value {value} ({error})"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4979
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid user ID: {user_id}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -5154,233 +5677,229 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-#, fuzzy
-#| msgid "Username"
-msgid "stream events"
-msgstr "பயனர்பெயர்"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
+#: zerver/models/custom_profile_fields.py:50
+#, python-brace-format
+msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
+#: zerver/models/custom_profile_fields.py:54
+#, python-brace-format
+msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
+#: zerver/models/custom_profile_fields.py:94
+msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+#: zerver/models/custom_profile_fields.py:112
+msgid "Link"
 msgstr ""
 
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
+#: zerver/models/custom_profile_fields.py:115
+msgid "External account"
 msgstr ""
 
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
+#: zerver/models/custom_profile_fields.py:120
+msgid "Pronouns"
 msgstr ""
 
-#: zerver/models.py:1343 zerver/models.py:1346
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
 #, python-brace-format
 msgid "Bad regular expression: {regex}"
 msgstr ""
 
-#: zerver/models.py:1348
+#: zerver/models/linkifiers.py:37
 msgid "Unknown regular expression error"
 msgstr ""
 
-#: zerver/models.py:1356
+#: zerver/models/linkifiers.py:45
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid URL template."
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/models.py:1405
+#: zerver/models/linkifiers.py:94
 #, python-format
 msgid "Group %(name)r in URL template is not present in linkifier pattern."
 msgstr ""
 
-#: zerver/models.py:1417
+#: zerver/models/linkifiers.py:106
 #, python-format
 msgid "Group %(name)r in linkifier pattern is not present in URL template."
 msgstr ""
 
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
 msgid "Invalid characters in pygments language"
 msgstr ""
 
-#: zerver/models.py:1503
+#: zerver/models/realm_playgrounds.py:70
 msgid "Missing the required variable \"code\" in the URL template"
 msgstr ""
 
-#: zerver/models.py:1508
+#: zerver/models/realm_playgrounds.py:75
 msgid "\"code\" should be the only variable present in the URL template"
 msgstr ""
 
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
+#: zerver/models/realms.py:337
 #, fuzzy
-#| msgid "Administrators"
-msgid "Admins and moderators"
-msgstr "நிர்வாகிகள்"
+#| msgid "Username"
+msgid "stream events"
+msgstr "பயனர்பெயர்"
 
-#: zerver/models.py:1798
-msgid "Admins only"
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
 msgstr ""
 
-#: zerver/models.py:1799
-msgid "Nobody"
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
 msgstr ""
 
-#: zerver/models.py:1961
-msgid "Unknown user"
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
 msgstr ""
 
-#: zerver/models.py:2117
-#, fuzzy
-#| msgid "Administrators"
-msgid "Organization owner"
-msgstr "நிர்வாகிகள்"
-
-#: zerver/models.py:2118
-#, fuzzy
-#| msgid "Administrators"
-msgid "Organization administrator"
-msgstr "நிர்வாகிகள்"
-
-#: zerver/models.py:2119
-msgid "Moderator"
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
 msgstr ""
 
-#: zerver/models.py:2120
-msgid "Member"
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
 msgstr ""
 
-#: zerver/models.py:2121
-msgid "Guest"
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
 msgstr ""
 
-#: zerver/models.py:2709
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
 msgid "Web-public"
 msgstr ""
 
-#: zerver/models.py:2715
+#: zerver/models/streams.py:52
 #, fuzzy
 #| msgid "All streams"
 msgid "Public"
 msgstr "அனைத்து தகவலரங்கங்கள்"
 
-#: zerver/models.py:2721
+#: zerver/models/streams.py:58
 #, fuzzy
 #| msgid "Private messages"
 msgid "Private, shared history"
 msgstr "தனிப்பட்ட செய்தி"
 
-#: zerver/models.py:2727
+#: zerver/models/streams.py:64
 msgid "Private, protected history"
 msgstr ""
 
-#: zerver/models.py:2735
+#: zerver/models/streams.py:72
 msgid "Public, protected history"
 msgstr ""
 
-#: zerver/models.py:2755
+#: zerver/models/streams.py:92
 msgid "All stream members can post"
 msgstr ""
 
-#: zerver/models.py:2756
+#: zerver/models/streams.py:93
 #, fuzzy
 #| msgid "Administrators"
 msgid "Only organization administrators can post"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/models.py:2758
+#: zerver/models/streams.py:95
 #, fuzzy
 #| msgid "Administrators"
 msgid "Only organization administrators and moderators can post"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/models.py:2761
+#: zerver/models/streams.py:98
 #, fuzzy
 #| msgid "Administrators"
 msgid "Only organization full members can post"
 msgstr "நிர்வாகிகள்"
 
-#: zerver/models.py:3446
-msgid "Unicode emoji"
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
 msgstr ""
 
-#: zerver/models.py:3447
-msgid "Custom emoji"
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
 msgstr ""
 
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
+#: zerver/models/users.py:255
+#, fuzzy
+#| msgid "Administrators"
+msgid "Admins and moderators"
+msgstr "நிர்வாகிகள்"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
 msgstr ""
 
-#: zerver/models.py:4983
-#, python-brace-format
-msgid "User with ID {user_id} is deactivated"
+#: zerver/models/users.py:257
+msgid "Nobody"
 msgstr ""
 
-#: zerver/models.py:4987
-#, python-brace-format
-msgid "User with ID {user_id} is a bot"
+#: zerver/models/users.py:419
+msgid "Unknown user"
 msgstr ""
 
-#: zerver/models.py:5027
-msgid "List of options"
+#: zerver/models/users.py:575
+#, fuzzy
+#| msgid "Administrators"
+msgid "Organization owner"
+msgstr "நிர்வாகிகள்"
+
+#: zerver/models/users.py:576
+#, fuzzy
+#| msgid "Administrators"
+msgid "Organization administrator"
+msgstr "நிர்வாகிகள்"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
 msgstr ""
 
-#: zerver/models.py:5030
-msgid "Person picker"
+#: zerver/models/users.py:578
+msgid "Member"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Short text"
-msgstr ""
-
-#: zerver/models.py:5043
-msgid "Long text"
-msgstr ""
-
-#: zerver/models.py:5044
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5045
-msgid "Link"
-msgstr ""
-
-#: zerver/models.py:5048
-msgid "External account"
-msgstr ""
-
-#: zerver/models.py:5053
-msgid "Pronouns"
+#: zerver/models/users.py:579
+msgid "Guest"
 msgstr ""
 
 #: zerver/signals.py:105
@@ -5395,20 +5914,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5448,41 +5967,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5533,7 +6052,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5582,19 +6101,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5612,45 +6131,49 @@ msgstr ""
 msgid "User is not muted"
 msgstr "தலைப்பு"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid status: {status}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid app ID"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5667,62 +6190,62 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr "நிர்வாகிகள்"
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid language '{language}'"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 #, fuzzy
 #| msgid "Administrators"
 msgid "Must be a demo organization."
 msgstr "நிர்வாகிகள்"
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid domain: {error}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 #, fuzzy
 #| msgid "Administrators"
 msgid "Only administrators can override default emoji."
 msgstr "நிர்வாகிகள்"
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5756,7 +6279,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5790,73 +6313,73 @@ msgstr "அறிவிப்புகளை இயக்கு"
 msgid "Invalid DSN"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 #, fuzzy
 #| msgid "All streams"
 msgid "new streams"
 msgstr "அனைத்து தகவலரங்கங்கள்"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Not subscribed to stream id {stream_id}"
@@ -5866,7 +6389,7 @@ msgstr "அறிவிப்புகளை இயக்கு"
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5890,113 +6413,113 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 #, fuzzy
 #| msgid "Topic"
 msgid "Topic is not muted"
@@ -6059,45 +6582,45 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid signature."
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -6130,11 +6653,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -6161,7 +6684,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -6178,92 +6701,119 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download exports]"
 "({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:81 zilencer/views.py:83
+#: zilencer/views.py:92 zilencer/views.py:94
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid UUID"
 msgstr "அறிவிப்புகளை இயக்கு"
 
 #. error
-#: zilencer/views.py:88
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:126
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:182
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:185
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:610
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, fuzzy, python-brace-format
 #| msgid "Enable notifications"
 msgid "Invalid property {property}"
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zilencer/views.py:613
+#: zilencer/views.py:726
 #, fuzzy
 #| msgid "Enable notifications"
 msgid "Invalid event type."
 msgstr "அறிவிப்புகளை இயக்கு"
 
-#: zilencer/views.py:620
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:696
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for "
-"assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:1009
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
 
+#, fuzzy
+#~| msgid "Private messages"
+#~ msgid "Messages"
+#~ msgstr "தனிப்பட்ட செய்தி"
+
 #, fuzzy
 #~| msgid "Enable notifications"
 #~ msgid "Invalid server_org_secret."
diff --git a/locale/ta/translations.json b/locale/ta/translations.json
index 91a924b4d8..bb50ad2eeb 100644
--- a/locale/ta/translations.json
+++ b/locale/ta/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(தலைப்பு இல்லை)",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "சேர்க்க",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "தானியங்கி",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "இணைப்பை நகலெடு ",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "மின்னஞ்சல்",
   "Email address": "மின்னஞ்சல் ",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "படம்",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "குறிப்பிடுகள்",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "செய்திகள்",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "விளக்கம் இல்லை",
   "No drafts selected": "",
   "No drafts.": "வரைவுகள் இல்லை",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "ஒருவருமில்லை",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "நபர்களைத் தேடு",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "இன்று",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "மேலும் தலைப்புகள்",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/tl/LC_MESSAGES/django.po b/locale/tl/LC_MESSAGES/django.po
index d410ac9b2f..e329f9c316 100644
--- a/locale/tl/LC_MESSAGES/django.po
+++ b/locale/tl/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Gabriel Ferrer, 2022\n"
 "Language-Team: Tagalog (http://app.transifex.com/zulip/zulip/language/tl/)\n"
@@ -18,57 +18,51 @@ msgstr ""
 "Language: tl\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Hindi pinapayagan ang mga panauhing tagagamit"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Walang bisa na kapisanan"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Mga Pampublikong Kapangkatan ng mga Paksa"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Mga Pribadong Kapangkatan ng mga Paksa"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr ""
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr ""
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -77,7 +71,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -86,7 +80,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -95,7 +89,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -104,7 +98,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -113,11 +107,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -133,124 +127,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Hindi kilalang pamamaraan ng pambayad. Maaaring ipaalam {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "May nangyaring masama. Ipaalam {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "May nangyaring masama. Maaaring buksan muli ang pahina."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "May nangyaring masama. Maaaring maghintay ng ilang segundo at subukan muli."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Walang dapat baguhin"
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Walang mamimili para sa kapisanan!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -258,54 +252,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -314,8 +315,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -420,7 +454,7 @@ msgstr ""
 msgid "Total users"
 msgstr ""
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Mga tagagamit"
 
@@ -560,36 +594,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Paniningil"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr ""
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -611,6 +741,451 @@ msgstr "Mga Kaurian"
 msgid "All"
 msgstr "Lahat"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -630,11 +1205,7 @@ msgstr "Sumali bilang self-hoster"
 msgid "Join as a contributor"
 msgstr "Sumali bilang tagapamahagi"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -649,12 +1220,12 @@ msgstr ""
 msgid "Create organization"
 msgstr ""
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -687,51 +1258,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr ""
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -747,14 +1315,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -802,7 +1362,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Sumali"
 
@@ -835,8 +1395,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Papasok"
 
@@ -869,26 +1429,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr ""
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1111,21 +1667,21 @@ msgstr ""
 msgid "Normal users"
 msgstr "Pangkaraniwan na tagagamit"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr ""
 
@@ -2348,7 +2904,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2368,7 +2924,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2378,12 +2943,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr ""
 
@@ -2415,7 +2980,7 @@ msgstr ""
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr ""
 
@@ -2783,12 +3348,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2797,11 +3358,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2970,6 +3526,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3127,123 +3699,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Hindi maaaring anyayahin sinuman."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3273,72 +3829,72 @@ msgstr "Hindi mabago ang nilalaman ng mensahe habang binabago Ang Kapangkatan ng
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Ikaw ay walang sapat na pahintulot upang baguhin ang mensaheng ito"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Ikaw ay walang sapat na pahintulot upang baguhin ang mensaheng ito"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3357,137 +3913,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "(Mga) Imbalidong Mensahe"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Hindi maipakita ang mensahe"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Inaaasahan ang eksaktong isang kapangkatan ng mga paksa"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Imbalidong tipo ng dato para sa Kapangkatan ng mga Paksa"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3496,38 +4057,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Ang mga mensahe sa Kapangkatan ng mga Paksa na ito ay mananatili sa habang panahon."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3541,7 +4102,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3551,187 +4112,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Walang sapat na pahintulot"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Bagong kontrasenya"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Nawawalang paksa"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Hindi makapadala sa maraming Kapangkatan ng mga paksa"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Nawawalang Kapangkatan ng mga Paksa"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Ang mensahe ay kailangan magkaroon ng maraming taga-pagtanggap"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Imbalidong tipo ng mensahe"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Imbalidong nakakabit"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3788,88 +4349,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr "Ang borador ay hindi mahanap"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Imbalidong pook ng tahanan"
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Labas ng iyong larangan."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Mga tirahan ng sulatroniko na naglalaman ng + ay pinagbabawal."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Mayroon nang kwenta"
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Ang kwenta ay pinawalang bisa."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3877,119 +4438,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "tagagamit"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Maling anyo ng JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Dapat ay miyembro ng samahan"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Dapat ay tagapamahala ng samahan"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Dapat ay may-ari ng samahan"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Ang iyong pasokngalan o kontrasenya ay mali"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Ang kwenta ay napawalang bisa"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Ang samahan ay napawalang bisa"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Ang pagpapatunay sa kontrasenya ay pinawalang bisa sa samahan na ito"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Ang iyong kontrasenya ay napawalang bisa at dapat nang baguhin"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Imablidong susing API"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Maling anyo na susing API"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Imbalidong mababang larangan"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Pinagbawalang pumasok"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3997,47 +4558,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4135,106 +4696,106 @@ msgstr ""
 msgid "Version control"
 msgstr "Pamamahala ng bersyon"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Pagbati at maligayang pagtanggap sa Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4243,119 +4804,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4369,45 +4930,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4419,23 +4980,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4455,21 +5016,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4506,7 +5067,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4520,7 +5081,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4529,7 +5090,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4561,28 +5122,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4593,18 +5154,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4614,24 +5175,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4641,8 +5202,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4661,21 +5222,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4732,161 +5293,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Ang pangalan ay napakahaba!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Pangit na pangalan o pasokngalan"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4920,215 +5481,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Mga Tagapamahala at Mga Pangulo ng Talakayan"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Tanging Mga Tagapamahala lamang"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Walang sinuman"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Pangulo ng Talakayan"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Miyembro"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr ""
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr ""
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr ""
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr ""
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Mga Tagapamahala at Mga Pangulo ng Talakayan"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Tanging Mga Tagapamahala lamang"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Walang sinuman"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Pangulo ng Talakayan"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Miyembro"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5141,20 +5698,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5192,41 +5749,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5277,7 +5834,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5326,19 +5883,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Nawawalang tagapagpadala"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5354,42 +5911,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5404,55 +5965,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5486,7 +6047,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5514,71 +6075,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr ""
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5587,7 +6148,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5611,112 +6172,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5777,43 +6338,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5846,11 +6407,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Dapat may nilalaman ang paksa"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Ang nilalalaman ay dapat may laman"
 
@@ -5877,7 +6438,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5894,83 +6455,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/tl/translations.json b/locale/tl/translations.json
index 66553618d8..43dc220988 100644
--- a/locale/tl/translations.json
+++ b/locale/tl/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(magpakailanman)",
   "(hidden)": "(nakatago)",
-  "(no description)": "(walang paglalarawan)",
   "(no topic)": "(walang paksa)",
   "(or )": "",
   "(you)": "(ikaw)",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 araw",
   "1 hour": "1 oras",
   "1 week": "1 linggo",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Dagdagan",
   "Add GIF": "Dagdagan ng GIF",
+  "Add a description": "",
   "Add a new alert word": "Dagdagan ng bagong salitang pang-alerto",
   "Add a new bot": "Dagdagan ng bagong bot",
   "Add a new code playground": "Dagdagan ng bagong palaruang pang-kodigo",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "Sulatronikong bot",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Sulatroniko",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "Pamahalaan itong tagagamit",
   "Manage user": "Pamahalaan ang tagagamit",
+  "Manage your API key": "",
   "March": "Marso",
   "Mark all messages as read": "Tatakan ang lahat ng mga mensahe bilang nabasa",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Tatakan bilang nabasa",
   "Mark as resolved": "Tatakan bilang nalutas",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "Mga Mungkahi",
   "Menus": "Mga Pagpipilian",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "Bago",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Bagong sulatroniko",
   "New message": "Bagong mensahe",
   "New option": "Bagong pagpipilian",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "Walang borador",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "Sumali",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po
index 93a714e631..05e214d5dd 100644
--- a/locale/tr/LC_MESSAGES/django.po
+++ b/locale/tr/LC_MESSAGES/django.po
@@ -8,19 +8,19 @@
 # Eren Dogan, 2023
 # Gokdeniz.Kucukali, 2021
 # Gokdeniz.Kucukali, 2021
-# Hüseyin Fahri Uzun , 2019-2021
+# Hüseyin Fahri Uzun , 2019-2021,2024
 # Oktay, 2018,2020-2021
 # Oktay, 2022
 # Onur Temiz , 2020
-# Tim Abbott , 2020-2021
+# Tim Abbott , 2020-2021,2024
 # yusuf , 2018
 msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: xe1st, 2023\n"
+"Last-Translator: Tim Abbott , 2020-2021,2024\n"
 "Language-Team: Turkish (http://app.transifex.com/zulip/zulip/language/tr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,57 +28,51 @@ msgstr ""
 "Language: tr\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Misafir kullanıcılara izin verilmemektedir"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Geçersiz organizasyon"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Açık kanallar"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Özel kanallar"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "Direkt iletiler"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "Grup direkt iletileri"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
-msgstr ""
+msgstr "Grafik için eksik kanal: {chart_name}"
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
-msgstr ""
+msgstr "Bilinmeyen grafik ismi: {chart_name}"
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Başlangıç zamanı bitiş zamanında sonra. Başlangıç: {start}, Bitiş: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Çözümleme verisi bulunmamaktadır. Lütfen sunucu yöneticinizle temasa geçiniz."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Geçersiz tür parametresi"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -87,7 +81,7 @@ msgid ""
 "users to join."
 msgstr "Organizasyonunuzun bütün Zulip lisansları kullanılmıştır ve yeni kullanıcı kabul edemez.\nYeni kullanıcı eklenebillmesi için lütfen [lisans sayısını artırın]({billing_page_link})  ve [atıl kullanıcıları devre dışı bırakın]({deactivate_user_help_page_link}) "
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr "Organizasyonunuzun yalnızca bir Zulip lisansı kaldı. Birden fazla kullanıcının katılmasına izin vermek için [lisans sayısını artırabilirsiniz]({billing_page_link}) veya [etkin olmayan kullanıcıları devre dışı bırakabilirsiniz]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr "Organizasyonununuzun yalnızca iki Zulip lisansı kaldı. İkiden fazla kullanıcının katılmasına izin vermek için [lisans sayısını artırabilirsiniz]({billing_page_link}) veya [etkin olmayan kullanıcıları devre dışı bırakabilirsiniz]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -114,7 +108,7 @@ msgid ""
 "join."
 msgstr "Organizasyonunuzun yalnızca üç Zulip lisansı kaldı. Üçten fazla kullanıcının katılmasına izin vermek için [lisans sayısını artırabilirsiniz]({billing_page_link}) veya [etkin olmayan kullanıcıları devre dışı bırakabilirsiniz]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -123,11 +117,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "Tüm Zulip lisansları kullanımda olduğundan organizasyonunuza yeni bir üye ({email}) katılamıyor. Yeni üyelerin katılmasına izin vermek için lütfen [lisans sayısını artırın]({billing_page_link}) veya [etkin olmayan kullanıcıları devre dışı bırakın]({deactivate_user_help_page_link})."
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "Bu organizasyon için tüm Zulip lisansları kullanımdadır."
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -137,195 +131,235 @@ msgstr "Organizasyonunun  {num_invites} kişi davet etmesi için gereken yeterli
 #: corporate/lib/remote_billing_util.py:133
 #: corporate/lib/remote_billing_util.py:169
 msgid "Registration is deactivated"
-msgstr ""
+msgstr "Kayıt devre dışı bırakıldı"
 
 #: corporate/lib/remote_billing_util.py:166
 msgid "Invalid remote server."
-msgstr ""
+msgstr "Geçersiz uzak sunucu."
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
-msgstr ""
+msgstr "Tüm aktif kullanıcılar için lisans satın almak zorundasınız (minimum {min_licenses})."
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
-msgstr ""
+msgstr "{max_licenses} lisansından daha fazla lisansa sahip faturalar bu sayfadan işlenemez. Yükseltmeyi tamamlamak için lütfen {email} ile iletişime geçin."
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
-msgstr ""
+msgstr "İşlenmiş bir ödeme yöntemi yok."
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} {last4} içinde sonra eriyor"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Bilinmeyen ödeme yöntemi. Lütfen {email} ile iletişime geçiniz"
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Bazı şeyler yanlış gitti. Lütfen {email} ile iletişime geçiniz"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Birşeyler yanlış gitti. Lütfen sayfayı yeniden yükleyiniz."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Birşeyler yanlış gitti. Lütfen birkaç saniye sonra bekleyin ve yeniden deneyiniz."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
-msgstr ""
+msgstr "Ücretsiz denemenizi başlatmadan önce lütfen bir kredi kartı ekleyin."
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
-msgstr ""
+msgstr "Lütfen yükseltme planlamak için bir kredi kartı ekleyin."
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "Plan yükseltilemedi. Plan tarihi geçmiş ve yeni bir plan ile değişmiştir."
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "Plan yükseltilemedi. Plan bitmiştir."
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
-msgstr ""
+msgstr "Ücretsiz deneme planı için geçerli faturalandırma döneminde lisanslar güncellenemiyor."
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "Lisanslar manuel olarak yükseltilemedi. Planınız otomatik lisans yönetimindedir."
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "Mevcut fatura döneminde planınız zaten {licenses} lisanslarında bulunuyor."
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "Mevcut fatura döneminde lisansları azaltamazsınız."
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
-msgstr ""
+msgstr "Düşürülen bir plan için bir sonraki faturalandırma döngüsü için lisanslar değiştirilemez."
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "Planınızın {licenses_at_next_renewal} lisanslarıyla yenilenmesi zaten planlandı."
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "Değişecek bir şey yok."
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "Bu organizasyon için müşteri yok!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "Oturum bulunamadı"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Ödeme yöneticisi veya organizasyon sahibi olmak zorunda"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "Ödeme amacı bulunamadı"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
 "\n"
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
-msgstr ""
+msgstr "Kuruluşunuzun sponsorlu hosting talebi onaylandı! Ücretsiz olarak {plan_name}'na yükseltildiniz. {emoji}\n\nEğer {begin_link} Zulip'i web sitenizde sponsor olarak listeleyebilirseniz {end_link} gerçekten minnettar oluruz!"
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
-msgstr ""
+msgstr "'onaylandı' parametresi gerekli"
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
-msgstr ""
+msgstr "Ödeme erişim anahtarı süresi doldu."
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
-msgstr ""
+msgstr "Geçersiz ödeme erişim anahtarı."
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr "Müşteriyi sunucudan alemlere taşıma işlemi başarısız oldu. Lütfen yardım için destek ekibiyle iletişime geçin."
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
-msgstr ""
+msgstr "Bu hesap henüz mevcut değil."
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
-msgstr ""
+msgstr "Devam etmek için Hizmet Koşullarını kabul etmelisiniz."
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
-msgstr ""
+msgstr "Bu zulip_org_id, Zulip'in faturalandırma yönetim sisteminde kayıtlı değil."
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
-msgstr ""
+msgstr "Bu zulip_org_id için geçersiz zulip_org_key ."
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
-msgstr ""
+msgstr "Sunucu kaydınız devre dışı bırakıldı."
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Geçersiz tür parametresi"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Hata"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "Methoda izin verilmiyor (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "Sayfa bulunamadı (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
 "                        If this error is unexpected, you can\n"
 "                        contact support.\n"
 "                        "
+msgstr "\n                        Bu hata beklenmedik bir durumsa, şunları yapabilirsiniz\n                        contact support.\n                        "
+
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
 msgstr ""
 
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "Methoda izin verilmiyor (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Dahili sunucu hatası"
 
@@ -334,14 +368,14 @@ msgid ""
 "\n"
 "                        Your Zulip chat cannot be loaded because the server is experiencing technical difficulties.\n"
 "                        "
-msgstr ""
+msgstr "\n                        Sunucuda teknik sorunlar yaşandığı için Zulip sohbetiniz yüklenemiyor.\n                        "
 
 #: templates/500.html:28
 msgid ""
 "\n"
 "                        This page will reload automatically when service is restored.\n"
 "                        "
-msgstr ""
+msgstr "\n                        Hizmet yeniden sağlandığında bu sayfa otomatik olarak yeniden yüklenecektir.\n                        "
 
 #: templates/500.html:32
 #, python-format
@@ -349,7 +383,7 @@ msgid ""
 "\n"
 "                            In the meantime, you can contact Zulip support.\n"
 "                            "
-msgstr ""
+msgstr "\n                            Bu arada, Zulip destek ile iletişime geçebilirsiniz.\n                            "
 
 #: templates/500.html:36
 #, python-format
@@ -358,7 +392,7 @@ msgid ""
 "                            In the meantime, you can contact\n"
 "                            this server's administrators for support.\n"
 "                            "
-msgstr ""
+msgstr "\n                            Bu arada, iletişim kurabilirsiniz\n                            destek için bu sunucunun yöneticilerine başvurun.\n                            "
 
 #: templates/500.html:44
 #, python-format
@@ -367,7 +401,7 @@ msgid ""
 "                            If you administer this server, you may want to check out the\n"
 "                            Zulip server troubleshooting guide.\n"
 "                            "
-msgstr ""
+msgstr "\n                            Bu sunucuyu siz yönetiyorsanız, şu adrese göz atmak isteyebilirsiniz\n                            Zulip sunucu sorun giderme kılavuzu.\n                            "
 
 #: templates/analytics/stats.html:6
 #, python-format
@@ -375,7 +409,7 @@ msgid ""
 "\n"
 "    Analytics for %(target_name)s | Zulip\n"
 "    "
-msgstr ""
+msgstr "\n%(target_name)s | Zulip için analitikler"
 
 #: templates/analytics/stats.html:18
 msgid "Analytics are fully available 24 hours after organization creation."
@@ -430,7 +464,7 @@ msgstr "15 günlük hareketler"
 msgid "Total users"
 msgstr "Toplam kullanıcılar"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Kullanıcılar"
 
@@ -558,7 +592,7 @@ msgstr "Yeni link için lütfen sistem yöneticisine başvurunuz."
 
 #: templates/confirmation/link_malformed.html:4
 msgid "Confirmation link malformed"
-msgstr ""
+msgstr "Doğrulama linki bozuk"
 
 #: templates/confirmation/link_malformed.html:13
 msgid "Whoops. The confirmation link is malformed."
@@ -570,41 +604,137 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Bağlantıyı tarayıcınıza doğru şekilde kopyaladığınızdan emin olun. Eğer hala bu sayfayla karşılaşıyorsanız, muhtemelen bizim hatamızdır. Üzgünüz."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Faturalandırma"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr "Modali Kapat"
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr "Boş ver"
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr "Düşür"
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "İptal"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Onayla"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr "Yükseltmeyi iptal et"
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "Ödeme durumu"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr "Sunucu kaydını iptalet?"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr "Plan yönetimi açık değil"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr "Bu organizasyon için plan yönetimi uygun değil\nçünkü Zulip sunucunuz zaten\n%(server_plan_name)s planındadır. Bu plan\nbu sunucudaki tüm organizasyonları kapsar. Planınızı yönetecek Zulip sunucusuna ait\nTüm eski versiyonlar için olan  giriş talimatlarını \nizleyin"
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr " Planı sunucudan buna taşımak için\n                        veya diğer sorularınız için destek ile iletişime geçin.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr "\n                        Bu sunucu için plan yönetimi mevcut değildir çünkü en az bir kuruluş\n                        bu sunucuda barındırılan zaten aktif bir plana sahiptir.\n                        "
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr "\n                        Giriş yaparak yönetiminizi planlayabilirsiniz.\n                        kuruluşu ile iletişime geçebilir veya sorularınız için destek ile iletişime geçebilirsiniz.\n                        "
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "Limit aşıldı"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Hız limiti aşıldı."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
 msgstr ""
 
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "%(retry_after)s saniye içinde tekrar deneyebilirsiniz."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr "Yükselt"
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
+msgstr "Yükseltmeden önce demo organizasyonu çevirin."
+
 #: templates/corporate/communities.html:28
 msgid "Open communities directory"
-msgstr ""
+msgstr "Açık topluluk rehberi"
 
 #: templates/corporate/communities.html:39
 #: templates/zerver/integrations/index.html:47
@@ -621,6 +751,451 @@ msgstr "Kategoriler"
 msgid "All"
 msgstr "Hepsi"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr "Limitsiz"
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr "Desteklenen"
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr "Self-yönetim"
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr "En fazla 10 kullanıcısı olan kuruluşlar için"
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr "Uygun değil"
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Zulip geliştirici birliği"
@@ -640,11 +1215,7 @@ msgstr "Kendi kendine ev sahibi olarak katılın"
 msgid "Join as a contributor"
 msgstr "Katılımcı olarak katılın"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -659,12 +1230,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Organizasyon oluştur"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
-msgstr ""
+msgstr "Planlar ve fiyatlar"
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -697,51 +1268,48 @@ msgstr "Eğitim fiyatlandırması"
 msgid "View pricing"
 msgstr "Fiyatlandırmayı görüntüle"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "İş için Zulip"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Desteğe ulaş"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "Gönderen"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Organizasyon"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "Konu"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "İleti"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Gönder"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr "Bize ulaştığıınız için teşekkürler"
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr "Bize ulaştığıınız için teşekkürler!"
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr "Yakın zamanda dönüş yapacağız."
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -757,20 +1325,12 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr "Şimdi Zulip'i deneyin"
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
 "        This team chat is now being hosted on Zulip Cloud. Please accept the Zulip Terms of Service to continue.\n"
 "        "
-msgstr ""
+msgstr "\n        Bu ekip sohbeti artık Zulip Cloud üzerinde barındırılıyor. Devam etmek için lütfen Zulip Hizmet Şartları'nı kabul edin.\n        "
 
 #: templates/two_factor/_wizard_forms.html:26
 msgid "Or, alternatively, use one of your backup phones:"
@@ -786,7 +1346,7 @@ msgstr "Yedekleme anahtarı kullan"
 
 #: templates/zerver/accounts_accept_terms.html:4
 msgid "Accept the Terms of Service"
-msgstr ""
+msgstr "Hizmet Koşullarını Kabul Et"
 
 #: templates/zerver/accounts_accept_terms.html:18
 msgid "Welcome to Zulip"
@@ -812,7 +1372,7 @@ msgstr "Devam et"
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Kayıt ol"
 
@@ -845,8 +1405,8 @@ msgstr "Zaten bir hesabınız var mı?"
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Giriş"
 
@@ -879,33 +1439,29 @@ msgstr "Bu mesaj kaybolmazsa, sayfayı yeniden yüklemey
 msgid "Error loading Zulip. Try reloading the page."
 msgstr "Zulip yüklenirken hata oluştu. Sayfayı yeniden yüklemeyi deneyin."
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "Zulip'e bağlanılanamadı."
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Güncellemeler gecikebilir."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "Yakından tekrar denenecek..."
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Şimdi dene."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "İletiler"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
-msgstr ""
+msgstr "Subdomain kimlik doğrulama hatası"
 
 #: templates/zerver/auth_subdomain.html:15
 msgid "Authentication subdomain"
-msgstr ""
+msgstr "Subdomain kimlik doğrulaması"
 
 #: templates/zerver/auth_subdomain.html:17
 msgid ""
@@ -916,7 +1472,7 @@ msgid ""
 "                        you probably got the address wrong. If you got stuck here while trying\n"
 "                        to log in, this is most likely a server bug or misconfiguration.\n"
 "                        "
-msgstr ""
+msgstr "\n                        Görünüşe göre buraya tesadüfen gelmişsiniz. Bu site\n                        kimlik doğrulama sürecinde bir ara adım olması amaçlanmıştır\n                        ve manuel olarak erişilmemelidir. Eğer buraya doğrudan geldiyseniz,\n                        muhtemelen adresi yanlış aldınız. Eğer denerken burada takıldıysanız\n                        giriş yapamıyorsanız, bu büyük olasılıkla bir sunucu hatası veya yanlış yapılandırmadır.\n                        "
 
 #: templates/zerver/change_email_address_visibility_modal.html:6
 msgid "Configure email address privacy"
@@ -926,13 +1482,13 @@ msgstr "E-posta adresi gizliliğini doğrulayın"
 msgid ""
 "Zulip lets you control which roles in the organization can view your email "
 "address."
-msgstr ""
+msgstr "Zulip, kuruluştaki hangi rollerin e-posta adresinizi görüntüleyebileceğini kontrol etmenizi sağlar."
 
 #: templates/zerver/change_email_address_visibility_modal.html:13
 msgid ""
 "Do you want to change the privacy setting for your email from the default "
 "configuration for this organization?"
-msgstr ""
+msgstr "E-postanızın gizlilik ayarını bu kuruluş için varsayılan yapılandırmadan değiştirmek istiyor musunuz?"
 
 #: templates/zerver/change_email_address_visibility_modal.html:15
 msgid "Who can access your email address"
@@ -944,20 +1500,20 @@ msgid ""
 "You can also change this setting after you join."
-msgstr ""
+msgstr "Bu ayarı katıldıktan sonra da değiştirebilirsiniz."
 
 #: templates/zerver/close_window.html:5
 msgid "Video call ended"
-msgstr ""
+msgstr "Video görüşmesi sonlandırıldı"
 
 #: templates/zerver/close_window.html:13
 msgid "You may now close this window."
-msgstr ""
+msgstr "Şimdi bu pencereyi kapatabilirsiniz."
 
 #: templates/zerver/config_error/container.html:4
 #: templates/zerver/config_error/container.html:14
 msgid "Configuration error"
-msgstr ""
+msgstr "Ayar hatası"
 
 #: templates/zerver/config_error/ldap.html:4
 msgid ""
@@ -966,7 +1522,7 @@ msgid ""
 "        organization first. Please use EmailAuthBackend to create\n"
 "        your organization and then try again.\n"
 "    "
-msgstr ""
+msgstr "\n        Bir LDAP oluşturmadan LDAP kullanarak oturum açmaya çalışıyorsunuz\n        önce organizasyon. Lütfen oluşturmak için EmailAuthBackend kullanın\n        ve sonra tekrar deneyin.\n    "
 
 #: templates/zerver/confirm_continue_registration.html:4
 msgid "Account not found"
@@ -1015,7 +1571,7 @@ msgid ""
 "                from Slack, Mattermost,\n"
 "                Gitter, or Rocket.Chat.\n"
 "                "
-msgstr ""
+msgstr "\n                Ya da ithal edin\n                Slack, Mattermost,\n                Gitter veya Rocket.Chat.\n                "
 
 #: templates/zerver/deactivated.html:4 templates/zerver/deactivated.html:19
 msgid "Deactivated organization"
@@ -1048,7 +1604,7 @@ msgstr "\nBu grubu yeniden etkinleştirmesi içinhere!\n"
 "    "
-msgstr ""
+msgstr "Tebrikler, yeni bir Zulip demo organizasyonu oluşturdunuz. Not\n    bu kuruluşun 30 gün içinde otomatik olarak silineceğini unutmayın. Daha fazla bilgi\n    demo organizasyonları hakkında burada!\n    "
 
 #: templates/zerver/emails/account_registered.html:19
 #, python-format
 msgid ""
 "Congratulations, you have created a new Zulip\n"
 "    organization: %(realm_name)s."
-msgstr ""
+msgstr "Tebrikler, yeni bir Zulip oluşturdunuz\n    organizasyon: %(realm_name)s."
 
 #: templates/zerver/emails/account_registered.html:24
 #: templates/zerver/emails/account_registered.txt:1
@@ -1170,14 +1726,14 @@ msgstr "Zulip'e hoşgeldiniz!"
 msgid ""
 "You've joined the Zulip organization %(realm_name)s.\n"
 "    "
-msgstr ""
+msgstr "Zulip organizasyonuna %(realm_name)s katıldınız.\n    "
 
 #: templates/zerver/emails/account_registered.html:32
 #, python-format
 msgid ""
 "You will use the following info to log into the Zulip web, mobile and desktop apps:"
-msgstr ""
+msgstr "Zulip web, mobil ve masaüstü uygulamalarına giriş yapmak için aşağıdaki bilgileri kullanacaksınız:"
 
 #: templates/zerver/emails/account_registered.html:34
 #: templates/zerver/emails/account_registered.txt:16
@@ -1191,7 +1747,7 @@ msgstr "Organizasyon URL'si: %(organization_url)s"
 #: templates/zerver/emails/account_registered.txt:20
 #, python-format
 msgid "Your username: %(ldap_username)s"
-msgstr ""
+msgstr "Kullanıcı adınız: %(ldap_username)s"
 
 #: templates/zerver/emails/account_registered.html:39
 #: templates/zerver/emails/account_registered.txt:22
@@ -1206,14 +1762,14 @@ msgstr "Hesap e-postanız: %(email)s"
 
 #: templates/zerver/emails/account_registered.html:45
 msgid "Go to organization"
-msgstr ""
+msgstr "Organizasyona git"
 
 #: templates/zerver/emails/account_registered.html:49
 #, python-format
 msgid ""
 "If you are new to Zulip, check out our Getting started guide!"
-msgstr ""
+msgstr "Zulip'te yeniyseniz, Getting started kılavuzumuza göz atın!"
 
 #: templates/zerver/emails/account_registered.html:51
 #, python-format
@@ -1221,14 +1777,14 @@ msgid ""
 "We also have a guide for Setting up your "
 "organization."
-msgstr ""
+msgstr "Ayrıca Kuruluşunuzu kurmak için de bir rehberimiz var."
 
 #: templates/zerver/emails/account_registered.html:57
 #, python-format
 msgid ""
 "Questions? Contact us — we'd love "
 "to help!"
-msgstr ""
+msgstr "Sorularınız mı var? Bize ulaşın - yardımcı olmak isteriz!"
 
 #: templates/zerver/emails/account_registered.subject.txt:2
 #, python-format
@@ -1246,13 +1802,13 @@ msgid ""
 " Congratulations, you have created a new demo Zulip organization. Note that "
 "this organization will be automatically deleted in 30 days. Learn more about"
 " demo organizations here: %(demo_organizations_help_link)s!"
-msgstr ""
+msgstr " Tebrikler, yeni bir demo Zulip organizasyonu oluşturdunuz. Bu organizasyonun 30 gün içinde otomatik olarak silineceğini unutmayın. Demo organizasyonlar hakkında daha fazla bilgiyi buradan edinebilirsiniz: %(demo_organizations_help_link)s!"
 
 #: templates/zerver/emails/account_registered.txt:7
 #, python-format
 msgid ""
 "Congratulations, you have created a new Zulip organization: %(realm_name)s."
-msgstr ""
+msgstr "Tebrikler, yeni bir Zulip organizasyonu oluşturdunuz: %(realm_name)s."
 
 #: templates/zerver/emails/account_registered.txt:10
 #, python-format
@@ -1264,26 +1820,26 @@ msgstr "%(realm_name)s Zulip organizasyonuna katıldınız."
 msgid ""
 "You will use the following info to log into the Zulip web, mobile and "
 "desktop apps (%(apps_page_link)s):"
-msgstr ""
+msgstr "Zulip web, mobil ve masaüstü uygulamalarına (%(apps_page_link)s) giriş yapmak için aşağıdaki bilgileri kullanacaksınız:"
 
 #: templates/zerver/emails/account_registered.txt:29
 #, python-format
 msgid ""
 "If you are new to Zulip, check out our Getting started guide "
 "(%(getting_user_started_link)s)!"
-msgstr ""
+msgstr "Zulip'te yeniyseniz, Başlangıç kılavuzumuza (%(getting_user_started_link)s) göz atın!"
 
 #: templates/zerver/emails/account_registered.txt:31
 #, python-format
 msgid ""
 " We also have a guide for Setting up your organization "
 "(%(getting_organization_started_link)s)."
-msgstr ""
+msgstr " Kuruluşunuzu kurmak için de bir kılavuzumuz var (%(getting_organization_started_link)s)."
 
 #: templates/zerver/emails/account_registered.txt:36
 #, python-format
 msgid "Questions? Contact us at %(support_email)s — we'd love to help!"
-msgstr ""
+msgstr "Sorularınız mı var? Bize %(support_email)s adresinden ulaşın - yardımcı olmak isteriz!"
 
 #: templates/zerver/emails/account_registered.txt:38
 #: templates/zerver/emails/confirm_registration.txt:21
@@ -1295,7 +1851,7 @@ msgstr ""
 msgid ""
 "If you have any questions, please contact this Zulip server's administrators"
 " at %(support_email)s."
-msgstr ""
+msgstr "Herhangi bir sorunuz varsa, lütfen bu Zulip sunucusunun yöneticileriyle %(support_email)s adresinden iletişime geçin."
 
 #: templates/zerver/emails/confirm_demo_organization_email.html:8
 #: templates/zerver/emails/confirm_demo_organization_email.txt:1
@@ -1313,11 +1869,11 @@ msgid ""
 "We received a request to add the email address %(new_email)s to your Zulip "
 "demo organization account on %(realm_uri)s. To confirm this update and set a"
 " password for this account, please click below:"
-msgstr ""
+msgstr "Zulip demo organizasyon hesabınıza %(realm_uri)s lerde %(new_email)s e-posta adresini eklemek için bir istek aldık. Bu güncellemeyi onaylamak ve bu hesap için bir şifre belirlemek için lütfen aşağıya tıklayın:"
 
 #: templates/zerver/emails/confirm_demo_organization_email.html:11
 msgid "Confirm and set password"
-msgstr ""
+msgstr "Onay ve şifre belirle"
 
 #: templates/zerver/emails/confirm_demo_organization_email.html:13
 #: templates/zerver/emails/confirm_new_email.html:13
@@ -1329,7 +1885,7 @@ msgstr "Eğer bu isteği siz  yapmadıysanız lütfen bizimle %(support_email)s
 
 #: templates/zerver/emails/confirm_demo_organization_email.subject.txt:1
 msgid "Verify your new email address for your demo Zulip organization"
-msgstr ""
+msgstr "Demo Zulip organizasyonunuz için yeni e-posta adresinizi doğrulayın"
 
 #: templates/zerver/emails/confirm_demo_organization_email.txt:9
 #: templates/zerver/emails/confirm_new_email.txt:9
@@ -1355,18 +1911,18 @@ msgstr "E-posta değişikliğini onayla"
 #: templates/zerver/emails/confirm_new_email.subject.txt:1
 #, python-format
 msgid "Verify your new email address for %(organization_host)s"
-msgstr ""
+msgstr "Yeni e-posta adresinizi %(organization_host)s için doğrulayın"
 
 #: templates/zerver/emails/confirm_registration.html:10
 #: templates/zerver/emails/confirm_registration.txt:2
 msgid "You have requested a new Zulip organization:"
-msgstr ""
+msgstr "Yeni bir Zulip organizasyonu talep ettiniz:"
 
 #: templates/zerver/emails/confirm_registration.html:13
 #: templates/zerver/emails/confirm_registration.txt:5
 #, python-format
 msgid "Organization type: %(organization_type)s"
-msgstr ""
+msgstr "Organizasyon tipi: %(organization_type)s"
 
 #: templates/zerver/emails/confirm_registration.html:16
 #: templates/zerver/emails/confirm_registration.txt:7
@@ -1378,7 +1934,7 @@ msgstr "Yakın zaman Zulip için kayıt oldunuz. Harika!"
 msgid ""
 "Click the button below to create the organization and register your account."
 " You'll be able to update the information above if you like."
-msgstr ""
+msgstr "Organizasyonu oluşturmak ve hesabınızı kaydetmek için aşağıdaki düğmeyi tıklayın. İsterseniz yukarıdaki bilgileri güncelleyebileceksiniz."
 
 #: templates/zerver/emails/confirm_registration.html:23
 msgid "Click the button below to complete registration."
@@ -1411,7 +1967,7 @@ msgstr "Aşağıdaki linke tıklayarak kaydı tamamla."
 msgid ""
 "Do you have questions or feedback to share? Contact us at %(support_email)s "
 "— we'd love to help!"
-msgstr ""
+msgstr "Paylaşmak istediğiniz sorularınız veya geri bildirimleriniz mi var? Bize %(support_email)s adresinden ulaşın - yardımcı olmak isteriz!"
 
 #: templates/zerver/emails/custom_email_base.pre.html:18
 #: templates/zerver/emails/digest.html:39
@@ -1428,24 +1984,24 @@ msgstr "Pazarlama e-postaları aboneliğinden çık"
 msgid ""
 "\n"
 "Your Zulip account on %(realm_uri)s has been deactivated, and you will no longer be able to log in.\n"
-msgstr ""
+msgstr "\n%(realm_uri)s üzerindeki Zulip hesabınız devre dışı bırakıldı ve artık giriş yapamayacaksınız.\n"
 
 #: templates/zerver/emails/deactivate.html:15
 #: templates/zerver/emails/deactivate.txt:6
 msgid "The administrators provided the following comment:"
-msgstr ""
+msgstr "Yöneticiler aşağıdaki yorumu yapmışlardır:"
 
 #: templates/zerver/emails/deactivate.subject.txt:1
 #, python-format
 msgid "Notification of account deactivation on %(realm_name)s"
-msgstr ""
+msgstr "%(realm_name)s hesap devre dışı bırakma bildirimi"
 
 #: templates/zerver/emails/deactivate.txt:1
 #, python-format
 msgid ""
 "\n"
 "Your Zulip account on %(realm_uri)s has been deactivated, and you will no longer be able to log in.\n"
-msgstr ""
+msgstr "\n%(realm_uri)s üzerindeki Zulip hesabınız devre dışı bırakıldı ve artık giriş yapamayacaksınız.\n"
 
 #: templates/zerver/emails/digest.html:27
 msgid "New streams"
@@ -1467,7 +2023,7 @@ msgstr "%(realm_name)s için Zulip bilgilendirmesi"
 #: templates/zerver/emails/digest.txt:12
 #, python-format
 msgid "Click here to log in to Zulip and catch up: %(organization_url)s."
-msgstr ""
+msgstr "Zulip'te oturum açmak ve yetişmek için buraya tıklayın: %(organization_url)s."
 
 #: templates/zerver/emails/digest.txt:15
 msgid "Manage email preferences:"
@@ -1500,7 +2056,7 @@ msgid ""
 "\n"
 "    If you have trouble logging in, you can reset your password.\n"
 "    "
-msgstr ""
+msgstr "\n    Oturum açmakta sorun yaşıyorsanız, şifrenizi sıfırlayabilirsiniz.\n    "
 
 #: templates/zerver/emails/find_team.html:24
 #: templates/zerver/emails/find_team.txt:14
@@ -1523,7 +2079,7 @@ msgstr "E-posta adresiniz %(email)siçin %(external_host)s tarafından barındı
 msgid ""
 "\n"
 "If you have trouble logging in, you can reset your password (%(help_url)s).\n"
-msgstr ""
+msgstr "\nGiriş yapmakta sorun yaşıyorsanız, şifrenizi sıfırlayabilirsiniz (%(help_url)s).\n"
 
 #: templates/zerver/emails/invitation.html:9
 #: templates/zerver/emails/invitation.txt:1
@@ -1610,14 +2166,14 @@ msgstr "Bu davetiye iki gün içersinde sona eriyor. Eğer davetiye sona ererse,
 msgid ""
 "If you have any questions, please contact this Zulip server's administrators"
 " at %(email)s."
-msgstr ""
+msgstr "Herhangi bir sorunuz varsa, lütfen bu Zulip sunucusunun yöneticileriyle %(email)s adresinden iletişime geçin."
 
 #: templates/zerver/emails/macros.html:18
 #, python-format
 msgid ""
 "Do you have questions or feedback to share? Contact us — we'd love to help!"
-msgstr ""
+msgstr "Paylaşmak istediğiniz sorularınız veya geri bildirimleriniz mi var? Bize ulaşın - yardımcı olmak isteriz!"
 
 #: templates/zerver/emails/missed_message.html:17
 #, python-format
@@ -1638,14 +2194,14 @@ msgstr "Bu e-posta ileti içeriğini içermez çünkü   %(topic_name)s."
-msgstr ""
+msgstr "Bunu alıyorsunuz çünkü tüm konu katılımcılarından #%(stream_name)s > %(topic_name)s içinde bahsedildi."
 
 #: templates/zerver/emails/missed_message.html:35
 #: templates/zerver/emails/missed_message.txt:31
 msgid ""
 "You are receiving this because you have wildcard mention notifications "
 "enabled for topics you follow."
-msgstr ""
+msgstr "Bunu alıyorsunuz çünkü takip ettiğiniz konular için joker söz bildirimlerini etkinleştirdiniz."
 
 #: templates/zerver/emails/missed_message.html:39
 #: templates/zerver/emails/missed_message.txt:35
 #, python-format
 msgid ""
 "You are receiving this because everyone was mentioned in #%(stream_name)s."
-msgstr ""
+msgstr "Bunu alıyorsunuz çünkü #%(stream_name)s'de herkesten bahsedildi."
 
 #: templates/zerver/emails/missed_message.html:41
 #: templates/zerver/emails/missed_message.txt:37
 msgid ""
 "You are receiving this because you have email notifications enabled for "
 "topics you follow."
-msgstr ""
+msgstr "Bunu alıyorsunuz çünkü takip ettiğiniz konular için e-posta bildirimlerini etkinleştirdiniz."
 
 #: templates/zerver/emails/missed_message.html:43
 #: templates/zerver/emails/missed_message.txt:39
@@ -1684,7 +2240,7 @@ msgstr ""
 msgid ""
 "You are receiving this because you have email notifications enabled for "
 "#%(stream_name)s."
-msgstr ""
+msgstr "Bunu alıyorsunuz çünkü #%(stream_name)s için e-posta bildirimlerini etkinleştirdiniz."
 
 #: templates/zerver/emails/missed_message.html:46
 #, python-format
@@ -1692,21 +2248,21 @@ msgid ""
 "Reply to this email directly, view it in "
 "%(realm_name)s Zulip, or manage email "
 "preferences."
-msgstr ""
+msgstr "Bu e-postayı doğrudan yanıtlayın, %(realm_name)s Zulip'te görüntüleyin veya e-posta tercihlerini yönetin."
 
 #: templates/zerver/emails/missed_message.html:48
 #, python-format
 msgid ""
 "View or reply in %(realm_name)s Zulip, or manage email preferences."
-msgstr ""
+msgstr "%(realm_name)s Zulip'te görüntüleyin veya yanıtlayın ya da e-posta tercihlerini yönetin."
 
 #: templates/zerver/emails/missed_message.html:50
 #, python-format
 msgid ""
 "Reply in %(realm_name)s Zulip, or manage email preferences."
-msgstr ""
+msgstr "Reply in %(realm_name)s Zulip, veya manage email preferences."
 
 #: templates/zerver/emails/missed_message.html:52
 #, python-format
@@ -1719,17 +2275,17 @@ msgstr "\nBu e-postaya cevap vermeyin. Bu Zulip sunucusu gelen e-postaları alma
 #: templates/zerver/emails/missed_message.subject.txt:2
 #, python-format
 msgid "Group DMs with %(huddle_display_name)s"
-msgstr ""
+msgstr "%(huddle_display_name)s ile olan Grup DM'leri"
 
 #: templates/zerver/emails/missed_message.subject.txt:3
 #, python-format
 msgid "DMs with %(sender_str)s"
-msgstr ""
+msgstr "%(sender_str)s ile olan DM'ler"
 
 #: templates/zerver/emails/missed_message.subject.txt:12
 #, python-format
 msgid "[resolved] #%(stream_name)s > %(topic_name)s"
-msgstr ""
+msgstr "[kapandı] #%(stream_name)s > %(topic_name)s"
 
 #: templates/zerver/emails/missed_message.subject.txt:17
 msgid "New messages"
@@ -1754,17 +2310,17 @@ msgstr "\nBu e-posta ileti içeriğini içermez çünkü e-posta bildirimlerinde
 #: templates/zerver/emails/missed_message.txt:43
 #, python-format
 msgid "Reply to this email directly, or view it in %(realm_name)s Zulip:"
-msgstr ""
+msgstr "Bu e-postayı doğrudan yanıtlayın veya %(realm_name)s Zulip'inde görüntüleyin:"
 
 #: templates/zerver/emails/missed_message.txt:47
 #, python-format
 msgid "View or reply in %(realm_name)s Zulip:"
-msgstr ""
+msgstr "%(realm_name)s Zulip'te görüntüleyin veya yanıtlayın:"
 
 #: templates/zerver/emails/missed_message.txt:51
 #, python-format
 msgid "Reply in %(realm_name)s Zulip:"
-msgstr ""
+msgstr " %(realm_name)s Zulip içinde yanıtla:"
 
 #: templates/zerver/emails/missed_message.txt:55
 msgid ""
@@ -1899,25 +2455,25 @@ msgid ""
 "If you've already decided to use Zulip for your organization, welcome! You "
 "can use our guide for setting up "
 "your organization to get started."
-msgstr ""
+msgstr "Kuruluşunuz için Zulip'i kullanmaya karar verdiyseniz, hoş geldiniz! Başlamak için kuruluşunuzu kurma kılavuzumuzu kullanabilirsiniz."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:13
 msgid ""
 "Otherwise, here is some advice we often hear from customers for evaluating "
 "any team chat product:"
-msgstr ""
+msgstr "Aksi takdirde, herhangi bir ekip sohbeti ürününü değerlendirmek için müşterilerden sıkça duyduğumuz bazı tavsiyeler aşağıda verilmiştir:"
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:15
 #, python-format
 msgid ""
 "Invite your teammates to explore "
 "with you and share their unique perspectives."
-msgstr ""
+msgstr "Ekip arkadaşlarınızı sizinle birlikte keşfetmeye ve benzersiz bakış açılarını paylaşmaya davet edin."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:16
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:6
 msgid "Use the app itself to chat about your impressions."
-msgstr ""
+msgstr "İzlenimleriniz hakkında sohbet etmek için uygulamanın kendisini kullanın."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:18
 #, python-format
@@ -1925,7 +2481,7 @@ msgid ""
 "Run a week-long trial with your "
 "team, without using any other chat tools. This is the only way to truly "
 "experience how a new chat app will help your team communicate."
-msgstr ""
+msgstr "Ekibinizle birlikte, başka hiçbir sohbet aracı kullanmadan bir haftalık bir deneme yapın. Yeni bir sohbet uygulamasının ekibinizin iletişimine nasıl yardımcı olacağını gerçekten deneyimlemenin tek yolu budur."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:23
 #, python-format
@@ -1933,7 +2489,7 @@ msgid ""
 "Zulip is designed to enable efficient "
 "communication, and we hope these tips help your team experience it in "
 "action."
-msgstr ""
+msgstr "Zulip, etkili iletişimi mümkün kılmak için tasarlanmıştır ve bu ipuçlarının ekibinizin bunu deneyimlemesine yardımcı olacağını umuyoruz."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.html:38
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:19
@@ -1943,42 +2499,42 @@ msgstr ""
 #: templates/zerver/emails/onboarding_zulip_topics.txt:14
 #, python-format
 msgid "Unsubscribe from welcome emails for %(realm_name)s"
-msgstr ""
+msgstr "%(realm_name)s için karşılama e-postaları aboneliğinden çıkın"
 
 #: templates/zerver/emails/onboarding_team_to_zulip.subject.txt:1
 msgid "Choosing the chat app for your team"
-msgstr ""
+msgstr "Ekibiniz için sohbet uygulamasını seçme"
 
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:1
 msgid ""
 "If you've already decided to use Zulip for your organization, welcome! You "
 "can use our guide for setting up your organization to get started."
-msgstr ""
+msgstr "Kuruluşunuz için Zulip'i kullanmaya karar verdiyseniz, hoş geldiniz! Başlamak için kuruluşunuzu ayarlama kılavuzumuzu kullanabilirsiniz."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:3
 msgid ""
 "Otherwise, here is some advice we often hear from customers for evaluating "
 "any team chat product:"
-msgstr ""
+msgstr "Aksi takdirde, herhangi bir ekip sohbeti ürününü değerlendirmek için müşterilerden sık sık duyduğumuz bazı tavsiyeleri burada bulabilirsiniz:"
 
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:6
 msgid ""
 "Invite your teammates to explore with you and share their unique "
 "perspectives."
-msgstr ""
+msgstr "Ekip arkadaşlarınızı sizinle birlikte keşfetmeye ve benzersiz bakış açılarını paylaşmaya davet edin."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:8
 msgid ""
 "Run a week-long trial with your team, without using any other chat tools. "
 "This is the only way to truly experience how a new chat app will help your "
 "team communicate."
-msgstr ""
+msgstr "Başka hiçbir sohbet aracı kullanmadan ekibinizle bir hafta boyunca deneme yapın. Yeni bir sohbet uygulamasının ekibinizin iletişimine nasıl yardımcı olacağını gerçekten deneyimlemenin tek yolu budur."
 
 #: templates/zerver/emails/onboarding_team_to_zulip.txt:10
 msgid ""
 "Zulip is designed to enable efficient communication, and we hope these tips "
 "help your team experience it in action."
-msgstr ""
+msgstr "Zulip, verimli iletişim sağlamak için tasarlanmıştır ve bu ipuçlarının ekibinizin bunu iş başında deneyimlemesine yardımcı olacağını umuyoruz."
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:9
 #: templates/zerver/emails/onboarding_zulip_guide.txt:1
@@ -1986,94 +2542,94 @@ msgid ""
 "As you are getting started with Zulip, we'd love to help you discover how it"
 " can work best for your needs. Check out this guide to key Zulip features "
 "for organizations like yours!"
-msgstr ""
+msgstr "Zulip'i kullanmaya başlarken, ihtiyaçlarınız için en iyi nasıl çalışabileceğini keşfetmenize yardımcı olmak isteriz. Sizinki gibi kuruluşlar için Zulip'in temel özelliklerine ilişkin bu kılavuza göz atın!"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:13
 #: templates/zerver/emails/onboarding_zulip_guide.txt:4
 msgid "View Zulip guide for businesses"
-msgstr ""
+msgstr "İşletmeler için Zulip rehberini görüntüle"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:15
 #: templates/zerver/emails/onboarding_zulip_guide.txt:6
 msgid "View Zulip guide for open-source projects"
-msgstr ""
+msgstr "Açık kaynaklı projeler için Zulip kılavuzunu görüntüleyin"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:17
 #: templates/zerver/emails/onboarding_zulip_guide.txt:8
 msgid "View Zulip guide for education"
-msgstr ""
+msgstr "Eğitim için Zulip rehberini görüntüle"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:19
 #: templates/zerver/emails/onboarding_zulip_guide.txt:10
 msgid "View Zulip guide for research"
-msgstr ""
+msgstr "Araştırma için Zulip rehberini görüntüle"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:21
 #: templates/zerver/emails/onboarding_zulip_guide.txt:12
 msgid "View Zulip guide for events and conferences"
-msgstr ""
+msgstr "Etkinlikler ve konferanslar için Zulip rehberini görüntüleyin"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:23
 #: templates/zerver/emails/onboarding_zulip_guide.txt:14
 msgid "View Zulip guide for non-profits"
-msgstr ""
+msgstr "Kar amacı gütmeyenler için Zulip rehberini görüntüle"
 
 #: templates/zerver/emails/onboarding_zulip_guide.html:25
 #: templates/zerver/emails/onboarding_zulip_guide.txt:16
 msgid "View Zulip guide for communities"
-msgstr ""
+msgstr "Topluluklar için Zulip rehberini görüntüle"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:2
 msgid "Zulip guide for businesses"
-msgstr ""
+msgstr "İşletmeler için Zulip rehberi"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:4
 msgid "Zulip guide for open-source projects"
-msgstr ""
+msgstr "Açık kaynak projeler için Zulip rehberini görüntüle"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:6
 msgid "Zulip guide for education"
-msgstr ""
+msgstr "Eğitim için Zulip rehberi"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:8
 msgid "Zulip guide for research"
-msgstr ""
+msgstr "Araştırma için Zulip rehberi"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:10
 msgid "Zulip guide for events and conferences"
-msgstr ""
+msgstr "Etkinlikler ve konferanslar için Zulip rehberi"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:12
 msgid "Zulip guide for non-profits"
-msgstr ""
+msgstr "Kar amacı gütmeyenler için Zulip rehberi"
 
 #: templates/zerver/emails/onboarding_zulip_guide.subject.txt:14
 msgid "Zulip guide for communities"
-msgstr ""
+msgstr "Topluluklar için Zulip rehberi"
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:9
 #: templates/zerver/emails/onboarding_zulip_topics.txt:1
 msgid ""
 "Here are some tips for keeping your Zulip conversations organized with "
 "topics."
-msgstr ""
+msgstr "Zulip konuşmalarınızı konu başlıklarıyla düzenli tutmak için bazı ipuçları."
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:13
 msgid ""
 "In Zulip, streams determine who gets a message. Topics tell "
 "you what the message is about."
-msgstr ""
+msgstr "Zulip'te akışlar bir mesajı kimin alacağını belirler. Topikler mesajın ne hakkında olduğunu söyler."
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:13
 #: templates/zerver/emails/onboarding_zulip_topics.txt:3
 msgid ""
 "Using topics, you can read Zulip one conversation at a time. You'll see each"
 " message in context, no matter how many different discussions are going on."
-msgstr ""
+msgstr "Konuları kullanarak, Zulip'i her seferinde bir konuşma okuyabilirsiniz. Kaç farklı tartışma devam ediyor olursa olsun, her mesajı bağlam içinde görürsünüz."
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:16
 msgid "Streams and topics in the Zulip app"
-msgstr ""
+msgstr "Zulip uygulamasındaki akışlar ve konular"
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:19
 #: templates/zerver/emails/onboarding_zulip_topics.txt:5
@@ -2082,7 +2638,7 @@ msgid ""
 "This way, the new conversation thread won't interrupt ongoing discussions. "
 "For a good topic name, think about finishing the sentence: “Hey, can we chat"
 " about…?”"
-msgstr ""
+msgstr "Yeni bir sohbet başlatmak için bir kanal seçin ve yeni bir konu başlatın. Bu şekilde, yeni sohbet başlığı devam eden tartışmaları kesintiye uğratmayacaktır. İyi bir konu adı için cümleyi bitirmeyi düşünün: \"Hey, şu konuda sohbet edebilir miyiz...?\""
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:22
 msgid "Examples of short topics"
@@ -2096,7 +2652,7 @@ msgid ""
 "messages, rename topics, or even "
 "move a topic to a "
 "different stream."
-msgstr ""
+msgstr "Konunuz için mükemmel ismi seçme konusunda stres yapmayın. Yerinde olmayan bir şey varsa, mesajları taşımak, konuları yeniden adlandırmak ve hatta konuyu farklı bir akışa taşımak kolaydır."
 
 #: templates/zerver/emails/onboarding_zulip_topics.html:28
 #: templates/zerver/emails/onboarding_zulip_topics.txt:10
@@ -2106,13 +2662,13 @@ msgstr "Zulip'e git"
 
 #: templates/zerver/emails/onboarding_zulip_topics.subject.txt:1
 msgid "Keep your conversations organized with topics"
-msgstr ""
+msgstr "Konuşmalarınızı konu başlıklarıyla düzenli tutun"
 
 #: templates/zerver/emails/onboarding_zulip_topics.txt:3
 msgid ""
 "In Zulip, streams determine who gets a message. Topics tell you what the "
 "message is about."
-msgstr ""
+msgstr "Zulip'te bir mesajı kimin alacağını akışlar belirler. Konular size mesajın ne hakkında olduğunu söyler."
 
 #: templates/zerver/emails/onboarding_zulip_topics.txt:7
 #, python-format
@@ -2121,7 +2677,7 @@ msgid ""
 "out of place, it's easy to move messages (%(move_messages_link)s), rename "
 "topics (%(rename_topics_link)s), or even move a topic to a different stream "
 "(%(move_topic_to_different_stream_link)s)."
-msgstr ""
+msgstr "Konunuz için mükemmel ismi seçme konusunda stres yapmayın. Yerinde olmayan bir şey varsa, mesajları taşımak (%(move_messages_link)s), konuları yeniden adlandırmak (%(rename_topics_link)s) ve hatta bir konuyu farklı bir akışa taşımak (%(move_topic_to_different_stream_link)s) kolaydır."
 
 #: templates/zerver/emails/password_reset.html:9
 #: templates/zerver/emails/password_reset.txt:1
@@ -2253,14 +2809,14 @@ msgstr "Aşağıdaki linke tıklayarak organizasyonu yeniden aktif duruma getir.
 msgid ""
 "Either you, or someone on your behalf, has requested a log in link to manage"
 " the Zulip plan for %(remote_server_hostname)s."
-msgstr ""
+msgstr "Ya siz ya da sizin adınıza birisi, %(remote_server_hostname)s için Zulip planını yönetmek üzere bir oturum açma bağlantısı talep etti."
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.html:12
 msgid ""
 "\n"
 "    Click the button below to log in.\n"
 "    "
-msgstr ""
+msgstr "\n    Giriş yapmak için aşağıdaki butona tıklayınız.\n    "
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.html:16
 #, python-format
@@ -2268,7 +2824,7 @@ msgid ""
 "\n"
 "    This link will expire in %(validity_in_hours)s hours.\n"
 "    "
-msgstr ""
+msgstr "\n    Bu bağlantının süresi %(validity_in_hours)s saat içinde dolacaktır.\n    "
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.html:24
 #: templates/zerver/emails/remote_realm_billing_confirm_login.html:17
@@ -2276,27 +2832,27 @@ msgstr ""
 msgid ""
 "Questions? Learn more or contact "
 "%(billing_contact_email)s."
-msgstr ""
+msgstr "Sorularınız mı var? Daha fazla bilgi edinin veya %(billing_contact_email)s ile iletişime geçin."
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.subject.txt:1
 msgid "Log in to Zulip plan management"
-msgstr ""
+msgstr "Zulip plan yönetimine giriş yapın"
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.txt:1
 #, python-format
 msgid ""
 "Either you, or someone on your behalf, has requested a log in link to manage"
 " the Zulip plan for %(remote_server_hostname)s."
-msgstr ""
+msgstr "Siz ya da sizin adınıza birisi, %(remote_server_hostname)s için Zulip planını yönetmek üzere bir oturum açma bağlantısı talep etti."
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.txt:4
 msgid "Click the link below to log in."
-msgstr ""
+msgstr "Giriş yapmak için aşağıdaki bağlantıya tıklayın."
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.txt:4
 #, python-format
 msgid "This link will expire in %(validity_in_hours)s hours."
-msgstr ""
+msgstr "Bu bağlantının süresi %(validity_in_hours)s saat içinde dolacaktır."
 
 #: templates/zerver/emails/remote_billing_legacy_server_confirm_login.txt:8
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:6
@@ -2304,7 +2860,7 @@ msgstr ""
 msgid ""
 "Questions? Learn more at %(billing_help_link)s or contact "
 "%(billing_contact_email)s."
-msgstr ""
+msgstr "Sorularınız mı var? Daha fazla bilgi için %(billing_help_link)s adresini ziyaret edin veya %(billing_contact_email)s ile iletişime geçin."
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.html:9
 #, python-format
@@ -2312,58 +2868,58 @@ msgid ""
 "\n"
 "    Click the button below to confirm your email and log in to Zulip plan management for %(remote_realm_host)s.\n"
 "    "
-msgstr ""
+msgstr "\n    E-postanızı onaylamak ve %(remote_realm_host)s için Zulip plan yönetimine giriş yapmak için aşağıdaki düğmeyi tıklayın.\n    "
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.html:14
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:4
 msgid "Confirm and log in"
-msgstr ""
+msgstr "Onayla ve giriş yap"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.subject.txt:1
 msgid "Confirm email for Zulip plan management"
-msgstr ""
+msgstr "Zulip plan yönetimi için e-postayı onayla"
 
 #: templates/zerver/emails/remote_realm_billing_confirm_login.txt:1
 #, python-format
 msgid ""
 "Click the link below to confirm your email and log in to Zulip plan "
 "management for %(remote_realm_host)s."
-msgstr ""
+msgstr "E-postanızı onaylamak ve %(remote_realm_host)s için Zulip plan yönetimine giriş yapmak için aşağıdaki bağlantıya tıklayın."
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.html:9
 #, python-format
 msgid ""
 "Your request for Zulip sponsorship has been approved! Your organization has "
 "been upgraded to the Zulip Community plan."
-msgstr ""
+msgstr "Zulip sponsorluk talebiniz onaylandı! Kuruluşunuz Zulip Topluluk planına yükseltildi."
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.html:12
 #, python-format
 msgid ""
 "If you could list Zulip as a sponsor on your "
 "website, we would really appreciate it!"
-msgstr ""
+msgstr "Zulip'i web sitenizde sponsor olarak listeleyebilirseniz, gerçekten minnettar oluruz!"
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.subject.txt:1
 #, python-format
 msgid "Community plan sponsorship approved for %(billing_entity)s!"
-msgstr ""
+msgstr "Topluluk planı sponsorluğu %(billing_entity)s için onaylandı!"
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:1
 msgid ""
 "Your request for Zulip sponsorship has been approved! Your organization has "
 "been upgraded to the Zulip Community plan."
-msgstr ""
+msgstr "Zulip sponsorluk talebiniz onaylandı! Kuruluşunuz Zulip Topluluk planına yükseltildi."
 
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
-msgstr ""
+"appreciate it!"
+msgstr "Zulip'i web sitenizde sponsor olarak listeleyebilirseniz, gerçekten minnettar oluruz!"
 
 #: templates/zerver/find_account.html:4
 msgid "Find your accounts"
-msgstr ""
+msgstr "Hesaplarınızı bulun"
 
 #: templates/zerver/find_account.html:12
 msgid "Find your Zulip accounts"
@@ -2376,9 +2932,18 @@ msgid ""
 "                    associated with Zulip organizations. The addresses entered\n"
 "                    on the previous page are listed below:\n"
 "                    "
+msgstr "\n                    E-postalar gönderildi! Yalnızca şu adreslerden e-posta alacaksınız\n                    Zulip kuruluşları ile ilişkilendirilmiştir. Girilen adresler\n                    önceki sayfada yer alan bilgiler aşağıda listelenmiştir:\n                    "
+
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2386,14 +2951,14 @@ msgid ""
 "                    active accounts. If you have also forgotten your password,\n"
 "                    you can reset it.\n"
 "                    "
-msgstr ""
+msgstr "\n                    URL'leri içeren bir e-posta almak için e-posta adresinizi girin\n                    sahip olduğunuz tüm Zulip Cloud organizasyonları için\n                    aktif hesaplar. Eğer şifrenizi de unuttuysanız,\n                    reset yapabilirsiniz.\n                    "
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "E-posta adresi"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Hesapları bul"
 
@@ -2411,7 +2976,7 @@ msgstr "Özellikler"
 
 #: templates/zerver/footer.html:12
 msgid "Self-hosting"
-msgstr ""
+msgstr "Self-kurulum"
 
 #: templates/zerver/footer.html:13
 msgid "Security"
@@ -2425,7 +2990,7 @@ msgstr "Entegrasyonlar"
 msgid "Desktop & mobile apps"
 msgstr "Masa üstü & mobil uygulamalar"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Yeni organizasyon"
 
@@ -2435,7 +3000,7 @@ msgstr "Çözümler"
 
 #: templates/zerver/footer.html:25
 msgid "Business"
-msgstr ""
+msgstr "İşletme"
 
 #: templates/zerver/footer.html:26
 msgid "Education"
@@ -2447,7 +3012,7 @@ msgstr "Araştırma"
 
 #: templates/zerver/footer.html:28
 msgid "Events & conferences"
-msgstr ""
+msgstr "Etkinlikler ve konferanslar"
 
 #: templates/zerver/footer.html:29
 msgid "Open source projects"
@@ -2463,11 +3028,11 @@ msgstr "Müşteri hikayeleri"
 
 #: templates/zerver/footer.html:32
 msgid "Open communities"
-msgstr ""
+msgstr "Açık Topluluklar"
 
 #: templates/zerver/footer.html:37
 msgid "Resources"
-msgstr ""
+msgstr "Kaynaklar"
 
 #: templates/zerver/footer.html:40
 msgid "Getting started"
@@ -2483,11 +3048,11 @@ msgstr "Topluluk sohbeti"
 
 #: templates/zerver/footer.html:44
 msgid "Zulip Cloud status"
-msgstr ""
+msgstr "Zulip Bulut durumu"
 
 #: templates/zerver/footer.html:47
 msgid "Organization set up"
-msgstr ""
+msgstr "Organizasyon kurulumu"
 
 #: templates/zerver/footer.html:52
 msgid "Installing a Zulip server"
@@ -2499,11 +3064,11 @@ msgstr "Zulip sunucusunu yükseltme"
 
 #: templates/zerver/footer.html:64
 msgid "Contributing"
-msgstr ""
+msgstr "Geliştirme"
 
 #: templates/zerver/footer.html:69
 msgid "Contributing guide"
-msgstr ""
+msgstr "Geliştirme rehberi"
 
 #: templates/zerver/footer.html:72
 msgid "Development community"
@@ -2531,7 +3096,7 @@ msgstr "Tarihçe"
 
 #: templates/zerver/footer.html:92
 msgid "Values"
-msgstr ""
+msgstr "Değerler"
 
 #: templates/zerver/footer.html:93
 msgid "Jobs"
@@ -2547,19 +3112,19 @@ msgstr "Zulip'i Destekle"
 
 #: templates/zerver/footer.html:98
 msgid "X (Twitter)"
-msgstr ""
+msgstr "X (Twitter)"
 
 #: templates/zerver/footer.html:99
 msgid "Mastodon"
-msgstr ""
+msgstr "Mastodon"
 
 #: templates/zerver/footer.html:100
 msgid "LinkedIn"
-msgstr ""
+msgstr "LinkedIn"
 
 #: templates/zerver/footer.html:110
 msgid "Powered by Zulip"
-msgstr ""
+msgstr "Zulip tarafından desteklenmektedir"
 
 #: templates/zerver/footer.html:116
 msgid "Terms of Service"
@@ -2571,7 +3136,7 @@ msgstr "Gizlilik politikası"
 
 #: templates/zerver/footer.html:119
 msgid "Website attributions"
-msgstr ""
+msgstr "Website ilişkilendirmesi"
 
 #: templates/zerver/insecure_desktop_app.html:4
 #: templates/zerver/insecure_desktop_app.html:15
@@ -2644,11 +3209,11 @@ msgstr "Geçersiz E-posta"
 
 #: templates/zerver/invalid_email.html:15
 msgid "Email not allowed"
-msgstr ""
+msgstr "Eposta'ya izin verilmiyor"
 
 #: templates/zerver/invalid_email.html:21
 msgid "The email address you are trying to sign up with is not valid."
-msgstr ""
+msgstr "Kaydolmaya çalıştığınız e-posta adresi geçerli değil."
 
 #: templates/zerver/invalid_email.html:24
 #, python-format
@@ -2656,7 +3221,7 @@ msgid ""
 "The organization you are trying to join, %(realm_name)s, does not allow signups using "
 "emails with your email domain."
-msgstr ""
+msgstr "Katılmaya çalıştığınız kuruluş, %(realm_name)s, e-posta alan adınızla e-posta kullanarak kaydolmaya izin vermiyor."
 
 #: templates/zerver/invalid_email.html:27
 #, python-format
@@ -2664,7 +3229,7 @@ msgid ""
 "The organization you are trying to join, %(realm_name)s, does not allow signups using "
 "disposable email addresses."
-msgstr ""
+msgstr "Katılmaya çalıştığınız kuruluş, %(realm_name)s, tek kullanımlık e-posta adresleri kullanarak kaydolmaya izin vermiyor."
 
 #: templates/zerver/invalid_email.html:30
 #, python-format
@@ -2672,15 +3237,15 @@ msgid ""
 "The organization you are trying to join, %(realm_name)s, does not allow signups using "
 "emails that contain \"+\"."
-msgstr ""
+msgstr "Katılmaya çalıştığınız kuruluş, %(realm_name)s, \"+\" içeren e-postalar kullanılarak kaydolmaya izin vermiyor."
 
 #: templates/zerver/invalid_email.html:33
 msgid "Please sign up using a valid email address."
-msgstr ""
+msgstr "Lütfen geçerli bir e-posta adresi kullanarak kaydolun."
 
 #: templates/zerver/invalid_email.html:35
 msgid "Please sign up using an allowed email address."
-msgstr ""
+msgstr "Lütfen izin verilen bir e-posta adresi kullanarak kaydolun."
 
 #: templates/zerver/invalid_realm.html:4
 #: templates/zerver/invalid_realm.html:12
@@ -2697,7 +3262,7 @@ msgstr "Bu alt etki alanında barındırılan bir Zulip organizasyonu yoktur."
 
 #: templates/zerver/log_into_subdomain_token_invalid.html:4
 msgid "Invalid or expired login session"
-msgstr ""
+msgstr "Geçersiz veya süresi dolmuş giriş oturumu"
 
 #: templates/zerver/log_into_subdomain_token_invalid.html:12
 msgid "Invalid or expired login session."
@@ -2709,7 +3274,7 @@ msgstr "Zulip'e giriş yap"
 
 #: templates/zerver/login.html:44
 msgid "View without an account"
-msgstr ""
+msgstr "Hesap olmadan gör"
 
 #: templates/zerver/login.html:69
 msgid ""
@@ -2747,25 +3312,25 @@ msgstr "Hesabınız yok mu? Bu organizasyona girmek için davet edilmelisiniz."
 msgid ""
 "Administrators of this Zulip organization will be able to see this email address.\n"
 "            "
-msgstr ""
+msgstr "Bu Zulip kuruluşunun yöneticileri bu e-posta adresini görebilecektir.\n            "
 
 #: templates/zerver/new_user_email_address_visibility.html:8
 msgid ""
 "Administrators and moderators of this Zulip organization will be able to see this email address.\n"
 "            "
-msgstr ""
+msgstr "Bu Zulip organizasyonunun yöneticileri ve moderatörleri bu e-posta adresini görebileceklerdir.\n            "
 
 #: templates/zerver/new_user_email_address_visibility.html:11
 msgid ""
 "Nobody in this Zulip organization will be able to see this email address.\n"
 "            "
-msgstr ""
+msgstr "Bu Zulip organizasyonundaki hiç kimse bu e-posta adresini göremeyecektir.\n            "
 
 #: templates/zerver/new_user_email_address_visibility.html:14
 msgid ""
 "Other users in this Zulip organization will be able to see this email address.\n"
 "            "
-msgstr ""
+msgstr "Bu Zulip organizasyonundaki diğer kullanıcılar bu e-posta adresini görebilecektir.\n            "
 
 #: templates/zerver/new_user_email_address_visibility.html:18
 msgid "Change"
@@ -2773,11 +3338,11 @@ msgstr "Değiştir"
 
 #: templates/zerver/no_spare_licenses.html:4
 msgid "No licenses available"
-msgstr ""
+msgstr "Lisans uygun değil"
 
 #: templates/zerver/no_spare_licenses.html:12
 msgid "Organization cannot accept new members right now"
-msgstr ""
+msgstr "Kuruluş şu anda yeni üye kabul edemiyor"
 
 #: templates/zerver/no_spare_licenses.html:16
 #, python-format
@@ -2785,33 +3350,24 @@ msgid ""
 "New members cannot currently join %(realm_name)s because all Zulip Cloud licenses "
 "are in use."
-msgstr ""
+msgstr "Tüm Zulip Cloud lisansları kullanımda olduğu için yeni üyeler şu anda %(realm_name)s'e katılamaz."
 
 #: templates/zerver/no_spare_licenses.html:19
 msgid ""
 "Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
-msgstr ""
+msgstr "Lütfen sizi davet eden kişiyle iletişime geçin ve lisans sayısını artırmalarını isteyin, sonra tekrar deneyin."
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Hız limiti aşıldı."
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "Bir kullanıcının bu eylemi ne sıklıkla \n                                     gerçekleştirebileceğine ilişkin sınırı aştınız."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "%(retry_after)s saniye içinde tekrar deneyebilirsiniz."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2823,7 +3379,7 @@ msgid ""
 "                    Creating a new organization on this server requires a valid organization creation link.\n"
 "                    Please see documentation on creating a new organization for more information.\n"
 "                    "
-msgstr ""
+msgstr "\n                    Bu sunucuda yeni bir kuruluş oluşturmak için geçerli bir kuruluş oluşturma bağlantısı gerekir.\n                    Daha fazla bilgi için lütfen yeni bir kuruluş oluşturma hakkındaki belgelere bakın.\n                    "
 
 #: templates/zerver/realm_creation_form.html:9
 #: templates/zerver/register.html:48
@@ -2864,11 +3420,11 @@ msgid ""
 "\n"
 "                        Unfortunately, this is not a valid link for creating an organization. Please obtain a new link and try again.\n"
 "                        "
-msgstr ""
+msgstr "\n                        Maalesef bu, bir kuruluş oluşturmak için geçerli bir bağlantı değildir. Lütfen yeni bir bağlantı edinin ve tekrar deneyin.\n                        "
 
 #: templates/zerver/realm_reactivation.html:4
 msgid "Organization successfully reactivated"
-msgstr ""
+msgstr "Organizasyon başarılı bir şekilde yeniden aktif edildi"
 
 #: templates/zerver/realm_reactivation.html:13
 msgid "Your organization has been successfully reactivated."
@@ -2876,7 +3432,7 @@ msgstr "Organizasyonun başarılı bir şekilde yeniden aktif edilmiştir."
 
 #: templates/zerver/realm_reactivation_link_error.html:4
 msgid "Organization reactivation link expired or invalid"
-msgstr ""
+msgstr "Kuruluş yeniden etkinleştirme bağlantısının süresi doldu veya geçersiz"
 
 #: templates/zerver/realm_reactivation_link_error.html:13
 msgid "The organization reactivation link has expired or is not valid."
@@ -2932,7 +3488,7 @@ msgid ""
 "\n"
 "            Enter your account details to complete registration.
\n"
 "            "
-msgstr ""
+msgstr "\n            Kaydı tamamlamak için hesap bilgilerinizi girin.
\n            "
 
 #: templates/zerver/register.html:36
 msgid "Your organization"
@@ -2980,6 +3536,22 @@ msgstr "Ne ile ilgisiniz?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Zulip'in düşük trafikli haber bültenine abone olun (yılda birkaç e-posta)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr "Beklenmeyen Zulip sunucu kaydı"
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr "\n                        Zulip kuruluşunuz bir kuruluşla ilişkili olarak kayıtlıdır\n                        farklı Zulip sunucu kurulumu.\n\n                        Lütfen Zulip destek ile iletişime geçin\n                        Bu sorunun çözümünde yardım için.\n                        "
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Parolanızı sıfırlayın"
@@ -3037,7 +3609,7 @@ msgstr "Bir kaç dakika içersinde işlemi sonlandırmak için e-postanı kontro
 
 #: templates/zerver/social_auth_select_email.html:4
 msgid "Select account for authentication"
-msgstr ""
+msgstr "Kimlik doğrulama için hesap seç"
 
 #: templates/zerver/social_auth_select_email.html:10
 msgid ""
@@ -3064,7 +3636,7 @@ msgstr "\nZulip'te oturum açarken için bunlardan birini kullanmak için önce\
 
 #: templates/zerver/unsubscribe_link_error.html:4
 msgid "Error unsubscribing email"
-msgstr ""
+msgstr "Eposta abonelik sonlandırılması hatası"
 
 #: templates/zerver/unsubscribe_link_error.html:12
 msgid "Unknown email unsubscribe request"
@@ -3074,7 +3646,7 @@ msgstr "Bilinmeyen e-posta abonelikten çıkma isteği"
 msgid ""
 "Hi there! It looks like you tried to unsubscribe from something, but we "
 "don't recognize the URL."
-msgstr ""
+msgstr "Merhaba! Görünüşe göre bir şeyden aboneliğinizi iptal etmeye çalıştınız, ancak URL'yi tanımıyoruz."
 
 #: templates/zerver/unsubscribe_link_error.html:19
 #, python-format
@@ -3082,7 +3654,7 @@ msgid ""
 "Please double-check that you have the full URL and try again, or email us and we'll get this squared "
 "away!"
-msgstr ""
+msgstr "Lütfen tam URL'ye sahip olduğunuzu iki kez kontrol edin ve tekrar deneyin veya bize e-posta gönderin ve bu sorunu çözelim!"
 
 #: templates/zerver/unsubscribe_success.html:4
 #: templates/zerver/unsubscribe_success.html:14
@@ -3096,7 +3668,7 @@ msgid ""
 "                    You've successfully unsubscribed from Zulip %(subscription_type)s emails for\n"
 "                    %(realm_name)s.\n"
 "                    "
-msgstr ""
+msgstr "\n                    Zulip %(subscription_type)s e-postalarına aboneliğinizi başarıyla iptal ettiniz.\n                    %(realm_name)s.\n                    "
 
 #: templates/zerver/unsubscribe_success.html:27
 #, python-format
@@ -3105,7 +3677,7 @@ msgid ""
 "                    You can undo this change or review your preferences in your\n"
 "                    notification settings.\n"
 "                    "
-msgstr ""
+msgstr "\n                    Bu değişikliği geri alabilir veya tercihlerinizi\n                    bildirim ayarları.\n                    "
 
 #: templates/zerver/unsupported_browser.html:4
 #: templates/zerver/unsupported_browser.html:15
@@ -3127,7 +3699,7 @@ msgid ""
 "                        Zulip supports modern browsers\n"
 "                        like Firefox, Chrome, and Edge.\n"
 "                        "
-msgstr ""
+msgstr "\n                        Zulip modern tarayıcıları destekler\n                        Firefox, Chrome ve Edge gibi.\n                        "
 
 #: templates/zerver/unsupported_browser.html:28
 #, python-format
@@ -3137,123 +3709,107 @@ msgid ""
 "                        "
 msgstr "\nZulip masaüstü uygulamasını da kullanabilirsiniz."
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "kaydolmalar"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} Zulip'e giriş yaptı. (toplam: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} Zulip'e katılma davetinizi kabul etti!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
-msgstr ""
+msgstr "Yer tutucu bir hesap etkinleştirilemiyor; bunun yerine kullanıcıdan kaydolmasını isteyin."
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Geçersiz sıralama"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Field id {id} bulunamadı."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
-msgstr ""
+msgstr "Geçersiz varsayılan kanal grubu adı '{group_name}'"
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
-msgstr ""
+msgstr "Varsayılan kanal grubu adı çok uzun (sınır: {max_length} karakter)"
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
-msgstr ""
+msgstr "Varsayılan kanal grubu adı '{group_name}' NULL (0x00) karakterler içeriyor."
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
-msgstr ""
+msgstr "{group_name} geçersiz varsayılan kanal grubu"
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' varsayılan kanaldır ve buraya '{group_name}' eklenemez"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Varsayılan '{group_name}' kanal grubu mevcut"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "'{stream_name}' kanal varsayılan '{group_name}' kanal gurubunda var"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "'{stream_name}'  kanalı varsayılan '{group_name}' kanal grubunda yok."
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
-msgstr ""
+msgstr "Bu varsayılan kanal grubu zaten '{group_name}' olarak adlandırılmıştır"
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
-msgstr ""
+msgstr "Kullanıcıları korumak için Zulip bir gün içinde gönderebileceğiniz davetiye sayısını sınırlar. Sınıra ulaştığınız için davetiye gönderilmedi."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Hesabınız bu organizasyon adına davetiye göndermek için çok yenidir. Bir organizasyon yöneticisi veya daha uzun süreli bir başka kullanıcıdan yardım alınız."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "E-postaların bazıları doğrulanamadığından bu kisilere davetiye gönderilemedi. Geri kalan herkesin davetiyesi gönderildi!"
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Kimseyi davet edemedik."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3265,11 +3821,11 @@ msgstr "Değiştirilecek bir şey yok"
 
 #: zerver/actions/message_edit.py:104
 msgid "Direct messages cannot be moved to streams."
-msgstr ""
+msgstr "Doğrudan mesajlar akışlara taşınamaz."
 
 #: zerver/actions/message_edit.py:106
 msgid "Direct messages cannot have topics."
-msgstr ""
+msgstr "Doğrudan mesajların konuları olamaz."
 
 #: zerver/actions/message_edit.py:109
 msgid "Invalid propagate_mode without topic edit"
@@ -3283,261 +3839,266 @@ msgstr "Kanal değiştirirken ileti içeriği değiştirilemez"
 msgid "Widgets cannot be edited."
 msgstr "Araçlar düzenlenemez."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Organizasyonunuz ileti değiştirmeye izin vermiyor"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Bu iletiyi düzenleme izniniz yok"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "İleti düzenleme için belirlenen zaman limiti geçmiştir."
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} bu konuyu çözüldü olarak işaretledi."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} bu konuyu çözülmemiş olarak işaretledi."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
-msgstr ""
+msgstr "Bu konu {user} tarafından {new_location} konumuna taşındı."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
-msgstr ""
+msgstr "Bir mesaj {user} tarafından bu konudan {new_location} konumuna taşındı."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
-msgstr ""
+msgstr "{changed_messages_count} mesajları {user} tarafından bu konudan {new_location} 'a taşındı."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
-msgstr ""
+msgstr "Bu konu {user} tarafından {old_location} konumundan buraya taşınmıştır."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
-msgstr ""
+msgstr "[Bir mesaj]({message_link}) {user} tarafından {old_location} 'dan buraya taşındı."
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
-msgstr ""
+msgstr "{changed_messages_count} mesajları {user} tarafından {old_location} 'dan buraya taşındı."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Organizasyonunuz ileti değiştirmeye izin vermiyor"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Bu iletiyi düzenleme izniniz yok"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "İleti düzenleme için belirlenen zaman limiti geçmiştir."
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
-msgstr ""
+msgstr "Bu mesajın konusunu düzenlemek için zaman sınırı geçti."
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Bu iletiyi taşımak için yetkiniz yok"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
-msgstr ""
+msgstr "Bu mesajın akışını düzenlemek için zaman sınırı geçti"
 
 #: zerver/actions/message_flags.py:257
 #, python-brace-format
 msgid "Invalid flag: '{flag}'"
-msgstr ""
+msgstr "Geçersiz bayrak: '{flag}'"
 
 #: zerver/actions/message_flags.py:259
 #, python-brace-format
 msgid "Flag not editable: '{flag}'"
-msgstr ""
+msgstr "Bayrak düzenlenemez: '{flag}'"
 
 #: zerver/actions/message_flags.py:262
 #, python-brace-format
 msgid "Invalid message flag operation: '{operation}'"
-msgstr ""
+msgstr "Geçersiz mesaj bayrağı işlemi: '{operation}'"
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Geçersiz ileti(ler)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "İleti gönderime hazırlanamadı"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Sadece bir kanal bekleniyor"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Kanal için geçersiz veri tipi"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Alıcılar için geçersiz veri tipi"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Alıcılar listesi e-posta veya kullanıcı ID içerebilir ama ikisi birden olamaz."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "{bot_identity} adlı botunuz stream ID {stream_id} nolu kanala ileti göndermeye çalıştı, fakat bu numara ile bir kanal bulunmamakta."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "{bot_identity} adlı botunuz {stream_name} adlı kanala ileti göndermeye çalıştı, fakat böyle bir kanal bulunmamakta. Oluşturmak için [buraya]({new_stream_link}) tıklayınız."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Your bot {bot_identity} adlı botunuz {stream_name} adlı kanala ileti göndermeye çalıştı. Bu kanal mevcut fakat hiç abonesi bulunmamakta."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
-msgstr ""
+msgstr "Bu organizasyonda doğrudan mesajlar devre dışı bırakılmıştır."
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
-msgstr ""
+msgstr "Bazı alıcılara erişim izniniz yok."
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
-msgstr ""
+msgstr "Bu organizasyonda gerekli olan konular"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Eklentiler: API programıcısı yanlış JSON içeriği gönderdi"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgetlar: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Bu isimle bir özel emoji hali hazırda mevcut."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
+msgstr "Sıralı liste yinelenen bağlayıcılar içermemelidir"
+
+#: zerver/actions/realm_linkifiers.py:155
+msgid "The ordered list must enumerate all existing linkifiers exactly once"
+msgstr "Sıralı liste, mevcut tüm bağlayıcıları tam olarak bir kez sıralamalıdır"
+
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
-msgid "The ordered list must enumerate all existing linkifiers exactly once"
-msgstr ""
+#: zerver/actions/scheduled_messages.py:145
+msgid "Scheduled message was already sent"
+msgstr "Zamanlanmış mesaj zaten gönderildi"
 
 #: zerver/actions/scheduled_messages.py:150
-msgid "Scheduled message was already sent"
-msgstr ""
-
-#: zerver/actions/scheduled_messages.py:155
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
-msgstr ""
+msgstr "Planlanan teslimat zamanı gelecekte olmalıdır."
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
-msgstr ""
+msgstr "Mesaj planlanan zamanda gönderilemedi."
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
-msgstr ""
+msgstr "{delivery_datetime} için zamanladığınız mesaj aşağıdaki hata nedeniyle gönderilemedi:"
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
-msgstr ""
+msgstr "[Zamanlanmış mesajları gör](#scheduled)"
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
-msgstr ""
+msgstr "Kanal zaten devre dışı"
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
-msgstr ""
+msgstr "Akış şu anda devre dışı değil"
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
-msgstr ""
+msgstr "{stream_name} adlı kanal zaten mevcut"
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
-msgstr ""
+msgstr "Kanal {stream_name} geri alındı."
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
-msgstr ""
+msgstr "{user} bu kanal için [erişim izinlerini] (/help/stream-permissions) **{old_policy}**'dan **{new_policy}**'ya değiştirdi."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
 "\n"
 "* **Old permissions**: {old_policy}.\n"
 "* **New permissions**: {new_policy}.\n"
-msgstr ""
+msgstr "{user} bu kanal için [gönderme izinlerini] (/help/stream-sending-policy) değiştirdi:\n\n* **Eski izinler**: {old_policy}.\n* **Yeni izinler**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name}  {old_stream_name} kanalının adını {new_stream_name} olarak değiştirdi."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Tanım yok."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
-msgstr ""
+msgstr "{user} bu kanal için açıklamayı değiştirdi."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Eski açıklama"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "Yeni açıklama"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
-msgstr ""
+msgstr "Sonsuza dek"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
-msgstr ""
+msgstr "Bu akıştaki mesajlar artık sonsuza kadar saklanacaktır."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3545,210 +4106,210 @@ msgid ""
 "* **New retention period**: {new_retention_period}\n"
 "\n"
 "{summary_line}"
-msgstr ""
+msgstr "{user} bu kanal için [mesaj saklama süresini](/help/message-retention-policy) değiştirdi:\n* **Eski saklama süresi**: {old_retention_period}\n* **Yeni saklama süresi**: {new_retention_period}\n\n{summary_line}"
 
 #: zerver/actions/submessage.py:36
 msgid "You cannot attach a submessage to this message."
 msgstr "Bu iletiye bir alt ileti ekleyemezsiniz."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
-msgstr ""
+msgstr "{user_id} geçersiz kullanıcı kimliği"
 
 #: zerver/actions/user_groups.py:210 zerver/actions/user_groups.py:240
 #, python-brace-format
 msgid "User group '{group_name}' already exists."
-msgstr ""
+msgstr "Kullanıcı grubu '{group_name}' zaten mevcut."
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Bu API gelen webhook botlarına müsait değildir."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Hesap bu alt alanla ilişkilendirilmedi"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Bu endpoint bot istemlerini kabul etmiyor."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Sunucu yöneticisi olmak zorunda"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Yetersiz izin"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Bu endpoint için HTTP basic authentication gerekiyor."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Basic auth için geçersiz doğrulama başlığı"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Basit doğrulama için geçersiz doğrulama başlığı"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook botları yalnızca webhooklara ulaşabilirler"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
-msgstr ""
+msgstr "Hesabınız {username} devre dışı bırakıldı. Yeniden etkinleştirmek için lütfen kuruluş yöneticinizle iletişime geçin."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "Şifre çok zayıf."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Alt alan adı 3 veya daha fazla karakterden oluşmalıdır."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Alt alan adının başında ve sonunda '-' bulunamaz."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Alt alan adında sadece küçük harfler, rakamlar ve '-' işaretleri kullanılabilir."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
-msgstr ""
+msgstr "Alt alan adı zaten kullanılıyor. Lütfen farklı bir tane seçin."
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
-msgstr ""
+msgstr "Alt alan adı rezerve edildi. Lütfen farklı bir tane seçin."
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Lütfen gercek e-posta adresinizi kullanın."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "{email} ile katılmak istediğiniz organizasyon mevcut değil."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Lütfen organizasyon yöneticinizden {email} için bir davetiye isteyiniz."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "E-posta adresiniz, {email}, bu organizasyonda hesap oluşturmak için izin verilmiş alan adlarından birine ait değil."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "+ işareti içeren e-posta adreslerine bu organizasyonda izin verilmemektedir."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "Tüm Zulip lisansları kullanımda olduğundan yeni üyeler bu organizasyona katılamaz. Lütfen sizi davet eden kişiyle iletişime geçin ve lisans sayısını artırmasını isteyin, ardından tekrar deneyin."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Yeni parola"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Yeni parola onayı"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
-msgstr ""
+msgstr "Oturum açmak için çok fazla deneme yapıyorsunuz. {seconds} içinde tekrar deneyin veya yardım için kuruluş yöneticinize başvurun."
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Şifreniz çok zayıf olduğundan dolayı devre dışı bırakılmıştır. Yeni bir tane oluşturmak için şifrenizi sıfırlayın."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Anahtar"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
-msgstr ""
+msgstr "İpucu: Aralarına virgül koyarak birden fazla e-posta adresi girebilirsiniz."
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Lütfen en fazla 10 E-posta adresi giriniz."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Zulip organizasyonunu bulamadık."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr "Geçersiz e-posta '{email}'"
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Konu eksik"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Birden çok kanala gönderilemiyor"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Kanal eksik"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "İletinin alıcıları olmalıdır"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Geçersiz ileti türu"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Geçersiz ek."
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Ek silinirken bir hata oluştu. Lütfen daha sonra tekrar deneyiniz."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "İleti alıcı içermelidir!"
 
 #: zerver/lib/digest.py:415
 #, python-brace-format
 msgid "{service_name} digest"
-msgstr ""
+msgstr "{service_name} digest"
 
 #: zerver/lib/domains.py:10
 msgid "Domain can't be empty."
@@ -3798,88 +4359,88 @@ msgstr "Kullanıcı, taslakları senkronize etmeyi devre dışı bıraktı."
 msgid "Draft does not exist"
 msgstr "Taslak mevcut değil"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Zulip'i açarak verileri önceden izleyin"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
-msgstr ""
+msgstr "{service_name} bildirimleri"
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Geçersiz adres."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Sizin alanınız dışında."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "+ işareti içeren e-posta adreslerine izin verilmemektedir."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Sistem botları için ayrıldı."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} bir hesaba sahip"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Zaten bir hesabı var."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Hesap devre dışı bırakıldı"
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
-msgstr ""
+msgstr "Emoji '{emoji_name}' mevcut değil"
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Geçersiz özel emoji."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Geçersiz özel emoji ismi."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Bu özel emoji devre dışıdır."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Geçersiz emoji kodu"
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Geçersiz emoji ismi"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Geçersiz emoji türü."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Organizasyon yöneticisi veya emoji tasarımcısı olmalı"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
-msgstr ""
+msgstr "Emoji adları bir harf veya rakamla bitmelidir."
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
-msgstr ""
+msgstr "Emoji adları yalnızca küçük İngilizce harfler, rakamlar, boşluklar, tire ve alt çizgi içermelidir."
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Emoji adı eksik"
 
@@ -3887,167 +4448,167 @@ msgstr "Emoji adı eksik"
 msgid "Could not allocate event queue"
 msgstr "Olay sırası atanamadı"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Oturum açık değil: API kimlik doğrulaması veya kullanıcı oturumu gerekli"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "'{stream}' kanalı  mevcut değil"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "'{stream_id}' kimlik numaralı kanal bulunmamaktadır"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "organizasyon sahibi"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "kullanıcı"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Tek {entity} devre dışı bırakılamaz"
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Geçersiz Markdown içerme durumu: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API kullanım sınırı aşıldı"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Hatalı biçimlendirilmiş JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Organizasyon üyesi olmak zorunda"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Organizasyon yöneticisi olmalı"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Organizasyon sahibi olmalı"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Kullanıcı adınız veya parolanız hatalı"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Hesap devre dışı bırakıldı"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Bu organizasyon devre dışıdır"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
-msgstr ""
+msgstr "Sunucunuz için mobil anlık bildirim hizmeti kaydı devre dışı bırakıldı"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Bu organizasyonda parola doğrulaması devre dışı bırakıldı"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Parolanız devre dışı bırakıldı ve sıfırlanması gerekiyor"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Geçersiz API anahtarı"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Hatalı API anahtarı"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
-msgstr ""
+msgstr "'{event_type}' olayı şu anda {webhook_name} webhook'u tarafından desteklenmiyor; yok sayılıyor"
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
-msgstr ""
+msgstr "İstek ayrıştırılamıyor: Bu olayı {webhook_name} mi oluşturdu?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
-msgstr ""
+msgstr "Kullanıcı giriş yapmadı"
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Geçersiz alt alan adı"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Erişim engellendi"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
 "{total_messages_allowed_to_move}/{total_messages_in_topic} most recent "
 "messages in this topic."
-msgstr ""
+msgstr "Yalnızca bu konudaki {total_messages_allowed_to_move}/{total_messages_in_topic} en son iletileri taşıma iznine sahipsiniz."
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Tepki halihazırda mevcut."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Tepki mevcut değil."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
-msgstr ""
+msgstr "Kuruluşunuz farklı bir Zulip sunucusuna kayıtlı. Bu sorunu çözme konusunda yardım almak için lütfen Zulip destek ekibiyle iletişime geçin."
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
-msgstr ""
+msgstr "Organizasyon kayıtlı değil"
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
-msgstr ""
+msgstr "Bu akışta kanal joker karakterlerini kullanma izniniz yok."
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
-msgstr ""
+msgstr "Bu konuda konu joker karakterlerini kullanma izniniz yok."
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr "Twitter kullanıcı adı"
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr "Github kullanıcı adı"
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Özel harici hesap, URL modelini tanımlamalıdır"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Geçersiz dış hesap tipi"
 
@@ -4131,7 +4692,7 @@ msgstr "Çeşitli"
 
 #: zerver/lib/integrations.py:53
 msgid "Monitoring"
-msgstr ""
+msgstr "Gözlemleme"
 
 #: zerver/lib/integrations.py:54
 msgid "Project management"
@@ -4145,310 +4706,310 @@ msgstr "Üretkenlik"
 msgid "Version control"
 msgstr "Versiyon kontrölü"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "İleti boş olmamalıdır"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "İleti boş bayt içermemelidir"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
-msgstr ""
+msgstr "'{user_group_name}' kullanıcı grubundan bahsetme izniniz yok. Bu gruptan bahsetmek için '{can_mention_group_name}' üyesi olmanız gerekir."
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
-msgstr ""
+msgstr "{operator} operatörü desteklenmiyor."
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Geçersiz süzme operatörü: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Eksik 'anchor' argümanı"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Geçersiz öbek"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
-msgstr ""
+msgstr "Zulip'te yeniyseniz, [Bir sınıf için Zulip kullanma kılavuzu]({getting_started_url}) yazımıza göz atın!"
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
-msgstr ""
+msgstr "Zulip'te yeniyseniz, [Başlarken]({getting_started_url}) kılavuzumuza göz atın!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
-msgstr ""
+msgstr "Ayrıca [Bir sınıf için Zulip kurulumu]({organization_setup_url}) için de bir kılavuzumuz var."
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
-msgstr ""
+msgstr "Ayrıca [Kuruluşunuzu kurma]({organization_setup_url}) için de bir kılavuzumuz bulunmaktadır."
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
-msgstr ""
+msgstr "Bunun bir [demo organizasyon] ({demo_organization_help_url}) olduğunu ve 30 gün içinde **otomatik olarak silineceğini** unutmayın."
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Merhaba, ve Zulip'e hoşgeldin!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
-msgstr ""
+msgstr "Bu doğrudan benden bir mesaj, Hoş Geldin Bot."
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
-msgstr ""
+msgstr "Ayrıca kurulum yapmanıza da yardımcı olabilirim! Yanıtlamak için bu mesajın herhangi bir yerine tıklamanız veya `r` tuşuna basmanız yeterlidir."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "İşte anladığım bazı mesajlar:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
-msgstr ""
+msgstr "[Mobil ve masaüstü uygulamalarını](/apps/) [indirebilirsiniz](/apps/). Zulip tarayıcıda da harika çalışıyor."
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
-msgstr ""
+msgstr "Bir [profil resmi](/help/change-your-profile-picture) eklemek ve [profil bilgilerinizi](/help/edit-your-profile) düzenlemek için [Profil ayarları](#settings/profile) bölümüne gidin."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
 "theme](/help/emoji-and-emoticons#change-your-emoji-set), [change your "
 "language](/help/change-your-language), and make other tweaks to your Zulip "
 "experience."
-msgstr ""
+msgstr "[Açık ve koyu temalar arasında geçiş yapmak](/help/dark-theme), [favori emoji temanızı seçmek](/help/emoji-and-emoticons#change-your-emoji-set), [dilinizi değiştirmek](/help/change-your-language) ve Zulip deneyiminizde diğer ince ayarları yapmak için [Tercihler](#settings/preferences) bölümüne gidin."
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
-msgstr ""
+msgstr "Zulip'te akışlar [kimin mesaj alacağını belirler](/help/streams-and-topics). Diğer sohbet uygulamalarındaki kanallara benzerler."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
-msgstr ""
+msgstr "[Akışlara göz atın ve abone olun](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
-msgstr ""
+msgstr "Zulip'te konular [size bir mesajın ne hakkında olduğunu söyler](/help/streams-and-topics). Bunlar hafif konulardır, bir e-postanın konu satırına çok benzerler."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
-msgstr ""
+msgstr "Neler olduğunu görmek için [Recent conversations] (#recent) sayfasına göz atın! Sol üstteki \"Direkt mesajlar \"a tıklayarak bu konuşmaya geri dönebilirsiniz."
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
-msgstr ""
+msgstr "Zulip'in [klavye kısayolları] (#keyboard-shortcuts) uygulamada hızlı ve verimli bir şekilde gezinmenizi sağlar."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
-msgstr ""
+msgstr "Bir [hile sayfası] (#keyboard-shortcuts) görmek için herhangi bir zamanda `?` tuşuna basın."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
-msgstr ""
+msgstr "Zulip, **bold**, *italik*, madde işaretli listeler ve daha fazlası için sezgisel bir format olan [Markdown](/help/format-your-message-using-markdown) kullanır. Bir kopya sayfası için [buraya](#message-formatting) tıklayın."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
-msgstr ""
+msgstr "Emoji tepkileri, kod blokları ve çok daha fazlası hakkında bilgi edinmek için [mesajlaşma ipuçları](/help/messaging-tips) bölümümüze göz atın!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
-msgstr ""
+msgstr "[Başlarken](/help/getting-started-with-zulip) kılavuzumuza göz atın veya daha fazla bilgi edinmek için [Yardım merkezi](/help/)'ne göz atın!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
-msgstr ""
+msgstr "Özür dilerim, mesajınızı anlayamadım. Lütfen aşağıdaki komutlardan birini deneyin:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Bu bir özel kanaldır, kanal isminin yanında ki kilit işaretinden de anlaşılacağı üzere."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Özel kanallar sadece üyeleri tarafından görülebilinir."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "[Kanal ayarları]({stream_settings_url}) sayfasından `{initial_private_stream_name}` tıklayarak bu kanalı yönetebilirsiniz."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Bu ileti #**{default_notification_stream_name}** kanalındaki `konu gösterimi` konuya aittir."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Konular sohbeti düzenli yapan küçük araçlardır."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "[Kanallar ve konular]({about_topics_help_url}) sayfasından konular ile ilgili daha fazla bilgiye ulaşabilirsiniz."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Bu ileti #**{default_notification_stream_name}** kanalındaki `yüzen kaplumbağalar` konuya aittir."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
-msgstr ""
+msgstr "Önceki bir mesajı yanıtlamadığınız her zaman [Yeni bir konu başlatın]({start_topic_help_url})."
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Geçersiz JSON cevabı"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Geçersiz cevap formatı"
 
 #: zerver/lib/push_notifications.py:431
 msgid "Invalid GCM option to bouncer: priority {priority!r}"
-msgstr ""
+msgstr "Fedai için geçersiz GCM seçeneği: öncelik {priority!r}"
 
 #: zerver/lib/push_notifications.py:441
 #, python-brace-format
 msgid "Invalid GCM options to bouncer: {options}"
-msgstr ""
+msgstr "Geçersiz GCM seçenekleri: {options}"
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Jeton (token) bulunamadı"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "Bu organizasyon, mobil push bildirimlerine ileti içeriği eklemeyi devre dışı bıraktı"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name}, @{user_group_name}'dan bahsetti:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} senden bahsetti:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} herkese bahsetti:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr "Test bildirimi"
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
-msgstr ""
+msgstr "Bu, {realm_name} ({realm_uri}) öğesinden gelen bir test bildirimidir."
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr "Cihaz tanımlanamadı"
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
-msgstr ""
+msgstr "Cihaz push bouncer tarafından tanınmıyor"
 
 #: zerver/lib/recipient_parsing.py:14
 msgid "Invalid data type for stream ID"
-msgstr ""
+msgstr "Akış kimliği için geçersiz veri türü"
 
 #: zerver/lib/recipient_parsing.py:29
 msgid "Recipient list may only contain user IDs"
-msgstr ""
+msgstr "Alıcı listesi yalnızca kullanıcı kimliklerini içerebilir"
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Kullanıcı bu sorgu için yetkilendirilmemiş"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' Zulip'i artık kullanmıyor."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
-msgstr ""
+msgstr "Kuruluşunuzun dışına doğrudan mesaj gönderemezsiniz."
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
-msgstr ""
+msgstr "Push bildirimleri bouncer hatası: {error}"
 
 #: zerver/lib/request.py:93
 #, python-brace-format
@@ -4465,24 +5026,24 @@ msgstr "Eksik '{var_name}' argümanı"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr " '{var_name}' için kötü değer : {bad_value} "
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
-msgstr ""
+msgstr "Bozuk veri"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
-msgstr ""
+msgstr "Argüman \"{name}\" geçerli bir JSON değil."
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
-msgstr ""
+msgstr "Zamanlanmış mesaj mevcut değil"
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
-msgstr ""
+msgstr "{service_name} hesap güvenliği"
 
 #: zerver/lib/streams.py:241
 msgid "Only organization administrators can send to this stream."
@@ -4504,7 +5065,7 @@ msgstr "Yeni üyeler bu kanala gönderemez."
 #: zerver/lib/streams.py:315
 #, python-brace-format
 msgid "Not authorized to send to stream '{stream_name}'"
-msgstr ""
+msgstr "'{stream_name}' akışına gönderme yetkisi yok"
 
 #: zerver/lib/streams.py:321
 msgid "Please supply 'stream'."
@@ -4516,83 +5077,83 @@ msgstr "Lütfen birini seçiniz: 'stream' veya 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
-msgstr ""
+msgstr "Geçersiz kalan kimliği"
 
 #: zerver/lib/streams.py:475
 #, python-brace-format
 msgid "Stream name '{stream_name}' is already taken."
-msgstr ""
+msgstr "Akış adı '{stream_name}' zaten alınmış."
 
 #: zerver/lib/streams.py:484 zerver/lib/streams.py:604
 #, python-brace-format
 msgid "Invalid stream name '{stream_name}'"
-msgstr ""
+msgstr "'{stream_name}' geçersiz kanal adı"
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
-msgstr ""
+msgstr "Varsayılan bir kanal özel olamaz."
 
 #: zerver/lib/streams.py:753
 #, python-brace-format
 msgid "Stream(s) ({stream_names}) do not exist"
-msgstr ""
+msgstr "Akış(lar) ({stream_names}) mevcut değil"
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
-msgstr ""
+msgstr "Web genel akışları etkinleştirilmemiştir."
 
 #: zerver/lib/streams.py:792
 #, python-brace-format
 msgid "Default stream group with id '{group_id}' does not exist."
-msgstr ""
+msgstr "'{group_id}' kimliğine sahip varsayılan kanal grubu mevcut değil."
 
 #: zerver/lib/string_validation.py:41
 msgid "Stream name can't be empty!"
-msgstr ""
+msgstr "Akış adı boş olamaz!"
 
 #: zerver/lib/string_validation.py:45
 #, python-brace-format
 msgid "Stream name too long (limit: {max_length} characters)."
-msgstr ""
+msgstr "Akış adı çok uzun (sınır: {max_length} karakter)."
 
 #: zerver/lib/string_validation.py:53
 #, python-brace-format
 msgid "Invalid character in stream name, at position {position}!"
-msgstr ""
+msgstr "Akış adında {position} konumunda geçersiz karakter!"
 
 #: zerver/lib/string_validation.py:61
 msgid "Topic can't be empty!"
-msgstr ""
+msgstr "Konu boş olamaz!"
 
 #: zerver/lib/string_validation.py:66
 #, python-brace-format
 msgid "Invalid character in topic, at position {position}!"
-msgstr ""
+msgstr "Konuda, {position} konumunda geçersiz karakter!"
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Bu kanal için abone bilgisi mevcut değil"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Özel kanal için kayıtlı listesine ulaşılanamadı"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} bir boolean değil"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} bir tarih değil"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} bir dict değil"
@@ -4600,21 +5161,21 @@ msgstr "{var_name} bir dict değil"
 #: zerver/lib/typed_endpoint.py:318 zerver/lib/typed_endpoint.py:332
 #, python-brace-format
 msgid "Argument \"{argument}\" at {var_name} is unexpected"
-msgstr ""
+msgstr "argüman \"{argument}\" at {var_name} beklenmedik"
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} küsuratlı değil"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} çok küçük"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} bir sayı değil"
@@ -4622,26 +5183,26 @@ msgstr "{var_name} bir sayı değil"
 #: zerver/lib/typed_endpoint.py:324 zerver/lib/typed_endpoint.py:325
 #, python-brace-format
 msgid "{var_name} is not valid JSON"
-msgstr ""
+msgstr "{var_name} geçerli bir JSON değil"
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} çok büyük"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} bir liste değil"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Geçersiz {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} çok uzun (limit: {max_length} karakter)"
@@ -4649,10 +5210,10 @@ msgstr "{var_name} çok uzun (limit: {max_length} karakter)"
 #: zerver/lib/typed_endpoint.py:330
 #, python-brace-format
 msgid "{var_name} is too short."
-msgstr ""
+msgstr "{var_name} çok kısa."
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} bir string değil"
@@ -4660,34 +5221,34 @@ msgstr "{var_name} bir string değil"
 #: zerver/lib/typed_endpoint.py:366
 #, python-brace-format
 msgid "{var_name} cannot be blank"
-msgstr ""
+msgstr "{var_name} boş olamaz"
 
 #: zerver/lib/typed_endpoint.py:369
 #, python-brace-format
 msgid "Invalid {var_name}: {msg}"
-msgstr ""
+msgstr "Geçersiz {var_name}: {msg}"
 
 #: zerver/lib/upload/__init__.py:30
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Bu yükleme organizasyonunuzun yükleme hakkını aşıyor."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Resim dosyası açılamadı; resim dosyası mı yükledin?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Resim boyutu limiti aşmaktadır."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Bozuk animasyonlu görüntü."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
-msgstr ""
+msgstr "Bilinmeyen hareketli resim formatı."
 
 #: zerver/lib/user_groups.py:94
 msgid "Invalid user group"
@@ -4696,210 +5257,210 @@ msgstr "Geçersiz kullanıcı grubu"
 #: zerver/lib/user_groups.py:153
 #, python-brace-format
 msgid "Invalid user group ID: {group_id}"
-msgstr ""
+msgstr "Geçersiz kullanıcı grubu kimliği: {group_id}"
 
 #: zerver/lib/user_groups.py:181
 #, python-brace-format
 msgid "'{setting_name}' must be a system user group."
-msgstr ""
+msgstr "'{setting_name}' bir sistem kullanıcı grubu olmalıdır."
 
 #: zerver/lib/user_groups.py:189
 #, python-brace-format
 msgid "'{setting_name}' setting cannot be set to 'role:internet' group."
-msgstr ""
+msgstr "'{setting_name}' ayarı 'role:internet' grubuna ayarlanamaz."
 
 #: zerver/lib/user_groups.py:196
 #, python-brace-format
 msgid "'{setting_name}' setting cannot be set to 'role:owners' group."
-msgstr ""
+msgstr "'{setting_name}' ayarı 'role:owners' grubuna ayarlanamaz."
 
 #: zerver/lib/user_groups.py:203
 #, python-brace-format
 msgid "'{setting_name}' setting cannot be set to 'role:nobody' group."
-msgstr ""
+msgstr "'{setting_name}' ayarı 'role:nobody' grubuna ayarlanamaz."
 
 #: zerver/lib/user_groups.py:213
 #, python-brace-format
 msgid "'{setting_name}' setting cannot be set to 'role:everyone' group."
-msgstr ""
+msgstr "'{setting_name}' ayarı 'role:everyone' grubuna ayarlanamaz."
 
 #: zerver/lib/user_groups.py:223
 #, python-brace-format
 msgid "'{setting_name}' setting cannot be set to '{group_name}' group."
-msgstr ""
+msgstr "'{setting_name}' ayarı '{group_name}' grubuna ayarlanamaz."
 
 #: zerver/lib/user_groups.py:233
 msgid "User group name can't be empty!"
-msgstr ""
+msgstr "Kullanıcı grubu adı boş olamaz!"
 
 #: zerver/lib/user_groups.py:237
 #, python-brace-format
 msgid "User group name cannot exceed {max_length} characters."
-msgstr ""
+msgstr "Kullanıcı grubu adı {max_length} karakterlerini aşamaz."
 
 #: zerver/lib/user_groups.py:245
 #, python-brace-format
 msgid "User group name cannot start with '{prefix}'."
-msgstr ""
+msgstr "Kullanıcı grubu adı '{prefix}' ile başlayamaz."
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "İsim çok uzun!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "İsim çok kısa!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "İsim'de geçersiz karakterler bulunuyor!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Geçersiz format!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Bu isim zaten var!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Kötü ad veya kullanıcı adı"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
-msgstr ""
+msgstr "'{integration_name}' geçersiz etegrasyon."
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
-msgstr ""
+msgstr "Eksik ayar parametreleri: {keys}"
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
-msgstr ""
+msgstr "Geçersiz {key} değeri {value} ({error})"
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Geçersiz ayar verisi!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Geçersiz bot türü"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Geçersiz arayüz türü"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
-msgstr ""
+msgstr "Geçersiz kullanıcı kimliği: {user_id}"
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Böyle bot yok"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Böyle bir kullanıcı yok"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Kullanıcı devre dışı bırakıldı"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} boş geçilemez."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} geçersiz uzunlukta {length};  {target_length} olmalı"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
-msgstr ""
+msgstr "{var_name} tanınan bir saat dilimi değil"
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} geçerli bir hex renk kodu değil"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} tam {length} parçaya sahip olmalı"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} anahtarı buradan {var_name} eksik"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
-msgstr ""
+msgstr "Beklenmeyen değerler: {keys}"
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} allowed_type değil"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} yanlış)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} bir URL değil"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
-msgstr ""
+msgstr "URL kalıbı '%(username)s' içermelidir."
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' boş geçilemez."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
-msgstr ""
+msgstr "Alanın yinelenen seçenekleri olmamalıdır."
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}', '{field_name}' için uygun bir seçenek değil."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} bir karakter ya da sayı listesi değil"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} bir karakter ya da sayı değil"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
-msgstr ""
+msgstr "{var_name} bir uzunluğu yok"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
-msgstr ""
+msgstr "{var_name} eksik"
 
 #: zerver/lib/webhooks/common.py:79
 #, python-brace-format
@@ -4909,7 +5470,7 @@ msgstr "HTTP olay başlığı '{header}' eksik"
 #: zerver/lib/webhooks/common.py:241
 #, python-brace-format
 msgid "The {webhook} webhook expects time in milliseconds."
-msgstr ""
+msgstr "{webhook} webhook'u milisaniye cinsinden zaman bekler."
 
 #: zerver/lib/zcommand.py:24
 msgid "There should be a leading slash in the zcommand."
@@ -4918,7 +5479,7 @@ msgstr "zcommand sonunda '/' olmalı"
 #: zerver/lib/zcommand.py:73
 #, python-brace-format
 msgid "No such command: {command}"
-msgstr ""
+msgstr "Böyle bir komut yok: {command}"
 
 #: zerver/middleware.py:449
 #, python-brace-format
@@ -4928,217 +5489,213 @@ msgstr "CSRF hatası: {reason}"
 #: zerver/middleware.py:620
 #, python-brace-format
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
-msgstr ""
+msgstr "Ters vekil sunucusu ayar eksiği: {proxy_reason}"
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "kanal iletileri"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr "GIPHY entegrasyonu devre dışı"
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Emoji adında geçersiz karakterler"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Bilinmeyen  regular expression hatası"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Pygments dilinde hatalı karakterler"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Yöneticiler, moderatörler, üyeler ve misafirler"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Yöneticiler, moderatörler ve üyeler."
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Yöneticiler ve moderatörler"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Sadece yöneticiler"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Hiç kimse"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Organizasyon sahibi"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Organizasyon ymeticisi"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderatör"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Üye"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Misafir"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-public"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Genel"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Özel, paylaşılan geçmiş"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Özel, korumalı geçmiş"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Tüm kalan üyeleri ileti gönderebilir"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Sadece organizasyon yöneticileri ileti gönderebilir"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Yalnızca organizasyon yöneticileri ve moderatörler gönderi yayınlayabilir"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Sadece organizasyon tam üyeleri ileti gönderebilir"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode emoji"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Özel emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip ekstra emoji"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
-msgstr ""
+msgstr "ID {user_id} olan kullanıcı devre dışı bırakıldı"
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
-msgstr ""
+msgstr "ID {user_id} olan kullanıcı bir bottur"
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Seçenekler listesi"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Kişi seçicisi"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Kısa metin"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Uzun metin"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Tarih"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Tarih seçicisi"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Dış hesap"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr "Zamiler"
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr "Kötü regex sorgusu: {regex}"
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Bilinmeyen  regular expression hatası"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr "Geçersiz URL taslağı."
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr "URL şablonundaki %(name)r grubu bağlayıcı deseninde mevcut değil."
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr "Bağlayıcı desenindeki %(name)r grubu URL şablonunda mevcut değil."
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode emoji"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Özel emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip ekstra emoji"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Emoji adında geçersiz karakterler"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Pygments dilinde hatalı karakterler"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr "URL şablonunda gerekli \"code\" değişkeni eksik"
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr "URL şablonunda bulunan tek değişken \"code\" olmalıdır"
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "kanal iletileri"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Zulip Cloud Standard'da mevcuttur. Erişmek için yükseltin."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr "Zulip Cloud Plus'ta mevcuttur. Erişmek için yükseltin."
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr "GIPHY entegrasyonu devre dışı"
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr "Y (Çok genç izleyici) olarak derecelendirilmiş GIF'lere izin ver"
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr "GIF'lerin G (Genel izleyici) olarak derecelendirilmesine izin verin"
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr "PG (Ebeveyn rehberliği) dereceli GIF'lere izin ver"
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr "PG-13 (Ebeveyn rehberliği - 13 yaş altı) dereceli GIF'lere izin ver"
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr "R dereceli GIF'lere izin ver (Kısıtlı)"
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-public"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Genel"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Özel, paylaşılan geçmiş"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Özel, korumalı geçmiş"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Açık, korumalı geçmiş"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Tüm kalan üyeleri ileti gönderebilir"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Sadece organizasyon yöneticileri ileti gönderebilir"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Yalnızca organizasyon yöneticileri ve moderatörler gönderi yayınlayabilir"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Sadece organizasyon tam üyeleri ileti gönderebilir"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Yöneticiler, moderatörler, üyeler ve misafirler"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Yöneticiler, moderatörler ve üyeler."
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Yöneticiler ve moderatörler"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Sadece yöneticiler"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Hiç kimse"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr "Bilinmeyen kullanıcı"
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Organizasyon sahibi"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Organizasyon ymeticisi"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderatör"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Üye"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Misafir"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Bilinmeyen IP adresi"
@@ -5151,20 +5708,20 @@ msgstr "Bilinmeyen bir işletim sistemi"
 msgid "An unknown browser"
 msgstr "Bilinmeyen bir tarayıcı"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "'queue_id' argümanı eksik"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "'last_event_id' argümanı eksik"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "{event_id} olayından daha yeni bir olay kesildi!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "{event_id} olayı bu sırada değildi"
@@ -5172,11 +5729,11 @@ msgstr "{event_id} olayı bu sırada değildi"
 #: zerver/tornado/exceptions.py:17
 #, python-brace-format
 msgid "Bad event queue ID: {queue_id}"
-msgstr ""
+msgstr "Hatalı olay kuyruğu kimliği: {queue_id}"
 
 #: zerver/views/auth.py:552
 msgid "JWT authentication is not enabled for this organization"
-msgstr ""
+msgstr "JWT kimlik doğrulaması bu kuruluş için etkinleştirilmemiştir"
 
 #: zerver/views/auth.py:555
 msgid "No JSON web token passed in request"
@@ -5188,7 +5745,7 @@ msgstr "JSON web token hatalı"
 
 #: zerver/views/auth.py:565
 msgid "No email specified in JSON web token claims"
-msgstr ""
+msgstr "JSON web belirteci taleplerinde e-posta belirtilmemiş"
 
 #: zerver/views/auth.py:1084
 msgid "Subdomain required"
@@ -5202,48 +5759,48 @@ msgstr "Parola yanlış"
 msgid "User-Agent header missing from request"
 msgstr "İstekte User-Agent başlığı eksik"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Başlık boş geçilemez."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Alan en az bir seçenek içermelidir."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
-msgstr ""
+msgstr "Alan türü profil özetinde görüntülenmek için desteklenmiyor."
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Geçersiz alan türü."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
-msgstr ""
+msgstr "Profil özetinde yalnızca 2 özel profil alanı görüntülenebilir."
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Bu başlık zaten mevcut."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Varsayılan özel alan güncellenemez."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Uç sunucu yayınlanmış versiyonda mevcut değil"
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend etkin değil"
 
 #: zerver/views/events_register.py:110 zerver/views/events_register.py:114
 #, python-brace-format
 msgid "Invalid '{key}' parameter for anonymous request"
-msgstr ""
+msgstr "Anonim istek için geçersiz '{key}' parametresi"
 
 #: zerver/views/health.py:17
 msgid "Database is empty"
@@ -5251,32 +5808,32 @@ msgstr "Veri tabanı boş"
 
 #: zerver/views/health.py:21
 msgid "Cannot query postgresql"
-msgstr ""
+msgstr "Postgresql sorgulanamıyor"
 
 #: zerver/views/health.py:28
 msgid "Cannot connect to rabbitmq"
-msgstr ""
+msgstr "Rabbitmq'ya bağlanılamıyor"
 
 #: zerver/views/health.py:34
 msgid "Cannot query rabbitmq"
-msgstr ""
+msgstr "Rabbitmq sorgulanamıyor"
 
 #: zerver/views/health.py:41
 msgid "Cannot query redis"
-msgstr ""
+msgstr "Redis sorgulanamıyor"
 
 #: zerver/views/health.py:51
 msgid "Cannot write to memcached"
-msgstr ""
+msgstr "Memcached'e yazılamadı"
 
 #: zerver/views/health.py:56
 msgid "Cannot query memcached"
-msgstr ""
+msgstr "Memcached sorgulanamıyor"
 
 #: zerver/views/hotspots.py:20
 #, python-brace-format
 msgid "Unknown onboarding_step: {onboarding_step}"
-msgstr ""
+msgstr "Bilinmeyen onboarding_step: {onboarding_step}"
 
 #: zerver/views/invite.py:77
 msgid "You must specify at least one email address."
@@ -5285,11 +5842,11 @@ msgstr "En az bir e-posta adresi belirtmelisiniz."
 #: zerver/views/invite.py:87
 #, python-brace-format
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
-msgstr ""
+msgstr "Akış, id: {stream_id} ile mevcut değil. Hiçbir davet gönderilmedi."
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
-msgstr ""
+msgstr "Diğer kullanıcıları akışlara abone etme izniniz yok."
 
 #: zerver/views/invite.py:131 zerver/views/invite.py:134
 #: zerver/views/invite.py:151 zerver/views/invite.py:154
@@ -5299,12 +5856,12 @@ msgstr "Böyle bir davetiye yok"
 
 #: zerver/views/invite.py:160
 msgid "Invitation has already been revoked"
-msgstr ""
+msgstr "Davet zaten iptal edildi"
 
 #: zerver/views/invite.py:224
 #, python-brace-format
 msgid "Invalid stream ID {stream_id}. No invites were sent."
-msgstr ""
+msgstr "Geçersiz kanal kimliği {stream_id}. Hiçbir davet gönderilmedi."
 
 #: zerver/views/message_edit.py:99
 msgid "Message edit history is disabled in this organization"
@@ -5325,30 +5882,30 @@ msgstr "İleti zaten silinmiş"
 #: zerver/views/message_fetch.py:99
 #, python-brace-format
 msgid "Too many messages requested (maximum {max_messages})."
-msgstr ""
+msgstr "Çok fazla mesaj talep edildi (maksimum {max_messages})."
 
 #: zerver/views/message_fetch.py:104 zerver/views/message_flags.py:85
 msgid "The anchor can only be excluded at an end of the range"
-msgstr ""
+msgstr "Çapa yalnızca aralığın bir ucunda hariç tutulabilir"
 
 #: zerver/views/message_flags.py:169
 #, python-brace-format
 msgid "No such topic '{topic}'"
-msgstr ""
+msgstr "'{topic}' böyle bir konu yok"
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Eksik gönderici"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Aynalama, alıcı kullanıcı kimlikleri ile izin verilmemektedir"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Geçersiz kopyalanmış ileti"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Bu organizasyonda Zephyr kopyalamaya (mirroring) izin verilmemektedir"
 
@@ -5364,45 +5921,49 @@ msgstr "Kullanıcı zaten sessiz"
 msgid "User is not muted"
 msgstr "Kullanıcı sessize alınmamış"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Bot kullanıcılar için bağlantı durumu bilgisi desteklenmiyor"
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "{user_id_or_email} ait bir veri yok"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Alıcı herhangi yeni bir değer göndermedi"
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "İstemci, emoji_code veya reaction_type gönderdiğinde emoji_name de gönderilmelidir."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
-msgstr ""
+msgstr "Geçersiz durum: {status}"
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
-msgstr ""
+msgstr "Geçersiz uygulama kimliği"
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Boş veya geçersiz uzunluk belirteci"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Geçersiz APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
-msgstr ""
+msgstr "Fedai tarafından döndürülen hata: {result}"
 
 #: zerver/views/reactions.py:49
 msgid ""
@@ -5412,60 +5973,60 @@ msgstr "Aşağıdaki argümanların en az biri gerekli: emoji_name, emoji_code"
 
 #: zerver/views/read_receipts.py:22
 msgid "Read receipts are disabled in this organization."
-msgstr ""
+msgstr "Bu organizasyonda okuma makbuzları devre dışı bırakılmıştır."
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
-msgstr ""
+msgstr "Geçersiz dil '{language}'"
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "En az bir kimlik doğrulama yöntemi etkinleştirilmelidir."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
-msgstr ""
+msgstr "Geçersiz video görüşme sağlayıcısı {video_chat_provider}"
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
-msgstr ""
+msgstr "Geçersiz giphy_rating {giphy_rating}"
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Demo organizasyon olmalı."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
-msgstr ""
+msgstr "Geçersiz ad: {error}"
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "{domain} alanı zaten sizin organizasyonunuzun bir parçası."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "{domain} alanı için hiç kayıt bulunamadı."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Bir ve yalnızca bir dosya yüklemelisiniz"
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
-msgstr ""
+msgstr "Yalnızca yöneticiler varsayılan emojiyi geçersiz kılabilir."
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
-msgstr ""
+msgstr "Yüklenen dosya izin verilen {max_size} sınırından daha büyük MiB"
 
 #: zerver/views/realm_export.py:44
 msgid "Exceeded rate limit."
@@ -5496,7 +6057,7 @@ msgstr "Dışa aktarma hala devam ediyor"
 msgid "You must upload exactly one icon."
 msgstr "Tam olarak bir simge yüklemeniz gerekir."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier bulunamadı."
 
@@ -5510,100 +6071,100 @@ msgstr "Hatalı oyun alanı"
 
 #: zerver/views/scheduled_messages.py:65
 msgid "Recipient required when updating type of scheduled message."
-msgstr ""
+msgstr "Zamanlanmış mesaj türü güncellenirken alıcı gereklidir."
 
 #: zerver/views/scheduled_messages.py:70
 msgid "Topic required when updating scheduled message type to stream."
-msgstr ""
+msgstr "Zamanlanmış mesaj türünü kanal olarak güncellerken gerekli konu."
 
 #: zerver/views/sentry.py:39
 msgid "Invalid request format"
-msgstr ""
+msgstr "Geçersiz sorgu formatı"
 
 #: zerver/views/sentry.py:42
 msgid "Invalid DSN"
-msgstr ""
+msgstr "Geçersiz DSN"
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Özel kanallar varsayılan yapılamaz."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "\"new_description\" veya \"new_group_name\" değişkeni göndermelisiniz."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr " \"op\" için seçilen değer geçersiz. Lütfen \"add\" veya \"remove\" değerlerinden birini seçiniz."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Kanal halihazırda bu isme sahip!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Gerçekleştirilecek bir eylem yok. Lütfen \"ekle\" veya \"sil\" işlemlerinden en az birini seçiniz."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} sizi {stream_name} kanalına abone yaptı."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} sizi bu kanallara abone yaptı:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "({stream_name}) kanalına erişim başarısız oldu."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Sadece diğer Zephyr aynalama kullanıcılarını özel kanallara davet edebilirsin."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} bu kanalları oluşturdu: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} yeni bir kanal oluşturdu {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "yeni kanallar"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
-msgstr ""
+msgstr "{user_name} tarafından oluşturulan **{policy}** akışı. **Açıklama:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
-msgstr ""
+msgstr "Bilinmeyen abonelik özelliği: {property}"
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
-msgstr ""
+msgstr "Akış kimliğine abone değil {stream_id}"
 
 #: zerver/views/submessage.py:38
 msgid "Invalid json for submessage"
 msgstr "Alt bildirim için geçersiz JSON"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Bu dosyayı görüntülemeye yetkili değilsiniz.
"
 
 #: zerver/views/typing.py:35
 msgid "Missing stream_id"
-msgstr ""
+msgstr "Eksik stream_id"
 
 #: zerver/views/typing.py:41
 msgid "User has disabled typing notifications for stream messages"
@@ -5611,7 +6172,7 @@ msgstr "Kullanıcı, kanal iletileri için yazma bildirimini devre dışı bıra
 
 #: zerver/views/typing.py:50
 msgid "Missing 'to' argument"
-msgstr ""
+msgstr "'kime' argümanı eksik"
 
 #: zerver/views/typing.py:55
 msgid "Empty 'to' list"
@@ -5619,114 +6180,114 @@ msgstr "Boş 'to' listesi"
 
 #: zerver/views/typing.py:58
 msgid "User has disabled typing notifications for direct messages"
-msgstr ""
+msgstr "Kullanıcı doğrudan mesajlar için yazma bildirimlerini devre dışı bıraktı"
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
-msgstr ""
+msgstr "Bu dosya mevcut değil veya silindi.
"
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Geçersiz anahtar"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Geçersiz dosya adı"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Yüklenecek bir dosya belirtmelisiniz"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Aynı anda yalnızca bir dosya yükleyebilirsiniz"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Verilen yeni veri yok"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
-msgstr ""
+msgstr "{user_full_name} sizi {group_name} grubuna ekledi."
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
-msgstr ""
+msgstr "{user_full_name} sizi {group_name} grubundan çıkardı."
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "{user_id} kullanıcısı hali hazırda bu grubun bir üyesi."
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
-msgstr ""
+msgstr "Bu kullanıcı grubunda '{user_id}' üyesi yok"
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
-msgstr ""
+msgstr "Kullanıcı grubu {group_id} zaten bu grubun bir alt grubudur."
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
-msgstr ""
+msgstr "Kullanıcı grubu {user_group_id} zaten geçirilen alt gruplardan birinin alt grubudur."
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
-msgstr ""
+msgstr "Kullanıcı grubu {group_id} bu grubun bir alt grubu değildir."
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Bu organizasyonda avatar değişiklikleri devre dışı bırakılmıştır."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Bu organizasyonda e-posta adresi değişiklikleri devre dışı bırakıldı."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Geçersiz default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
-msgstr ""
+msgstr "'{notification_sound}' geçersiz bildirim sesi"
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
-msgstr ""
+msgstr "Geçersiz e-posta gruplama süresi: {seconds} saniye"
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Zulip parolan LDAP tarafından yönetilmektedir"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Yanlış parola!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
-msgstr ""
+msgstr "Çok fazla deneme yapıyorsunuz! {seconds} içinde tekrar deneyin."
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Yeni parola zayıf!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Tam olarak bir avatar resmi yüklemelisin."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Konu sessize alınmadı"
 
@@ -5771,7 +6332,7 @@ msgstr "Kullanıcı adı zaten kullanımda"
 
 #: zerver/views/users.py:696
 msgid "User not authorized to create users"
-msgstr ""
+msgstr "Kullanıcının kullanıcı oluşturma yetkisi yok"
 
 #: zerver/views/users.py:711
 #, python-brace-format
@@ -5785,45 +6346,45 @@ msgstr "Bu organizasyonda tek kullanımlık E-posta adreslerinin kullanımına i
 #: zerver/views/users.py:722
 #, python-brace-format
 msgid "Email '{email}' already in use"
-msgstr ""
+msgstr "E-posta '{email}' zaten kullanımda"
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Geçersiz Zoom giriş tokeni"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom bilgileri ayarlanmadı"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Geçersiz Zoom oturum bilgisi"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Geçersiz Zoom kimlik bilgisi"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Bir Zoom görüşmesi oluşturulamadı"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton yapılandırılmamış."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Geçersiz imza."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "BigBlueButton sunucusuna bağlanırken hata oluştu."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "BigBlueButton sunucusunun kimliği doğrulanırken hata oluştu."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton sunucusu beklenmeyen bir hata döndürdü."
 
@@ -5845,7 +6406,7 @@ msgstr "Sizin için aynalamayı ayarlayamayadık"
 
 #: zerver/webhooks/circleci/view.py:83
 msgid "Projects using this version control system provider aren't supported"
-msgstr ""
+msgstr "Bu sürüm kontrol sistemi sağlayıcısını kullanan projeler desteklenmez"
 
 #: zerver/webhooks/freshstatus/view.py:99
 #: zerver/webhooks/uptimerobot/view.py:58 zerver/webhooks/zabbix/view.py:50
@@ -5856,11 +6417,11 @@ msgstr "Geçersiz istek"
 msgid "Unknown webhook request"
 msgstr "Bilinmeyen webhook isteği"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Konu boş olamaz"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "İçerik boş olamaz"
 
@@ -5881,13 +6442,13 @@ msgstr "The newrelic webhook requires current_state be in [open|acknowledged|clo
 msgid ""
 "The newrelic webhook requires state be in "
 "[created|activated|acknowledged|closed]"
-msgstr ""
+msgstr "Newrelic web kancası, durumun [created|activated|acknowledged|closed] konumunda olmasını gerektirir"
 
 #: zerver/webhooks/papertrail/view.py:31
 msgid "Events key is missing from payload"
-msgstr ""
+msgstr "Olaylar anahtarı yükte eksik"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Pivotal'dan gelen veri işlenemedi"
 
@@ -5902,85 +6463,107 @@ msgstr "Slack'ten bir ileti"
 #: zerver/webhooks/wordpress/view.py:57
 #, python-brace-format
 msgid "Unknown WordPress webhook action: {hook}"
-msgstr ""
+msgstr "Bilinmeyen WordPress web kancası eylemi: {hook}"
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
-msgstr ""
+msgstr "Veri dışa aktarma işleminiz tamamlandı. [Dışa aktarımları görüntüle ve indir]({export_settings_link})."
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Push bildirimleri bouncer'ı için geçersiz alt alan."
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Geçerli Zulip sunucusu API anahtarı ile doğrulama yapmalısınız"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Geçersiz UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Geçersiz jeton (token) türü"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
+msgstr "{hostname} geçerli bir ana bilgisayar adı değil"
+
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
-msgstr ""
+msgstr "Eksik ios_app_id"
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
+msgstr "Eksik user_id veya user_uuid"
+
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr "Planınız anlık bildirim göndermeye izin vermiyor."
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
-msgstr ""
+msgstr "Geçersiz özellik {property}"
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
-msgstr ""
+msgstr "Geçersiz etkinlik tipi."
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Veri sırası doğru değil"
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
-msgstr ""
+msgstr "Mükerrer kayıt tespit edildi."
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
-msgstr ""
+msgstr "Bozuk denetim kütük verisi"
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Parolanızı sıfırlamanız gerekiyor."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "id_token parametresi eksik"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Geçersiz OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Aynı anda mobile_flow_otp ve desktop_flow_otp kullanılamaz."
diff --git a/locale/tr/translations.json b/locale/tr/translations.json
index cc04201695..65df2ae2c7 100644
--- a/locale/tr/translations.json
+++ b/locale/tr/translations.json
@@ -1,19 +1,18 @@
 {
-  "%'{file}' exceeds the maximum file size for attachments ({variable} MB).": "",
-  "(attached file)": "",
+  "%'{file}' exceeds the maximum file size for attachments ({variable} MB).": "%'{file}' dosyası maksimum dosya boyutunu aşmaktadır ({variable} MB).",
+  "(attached file)": "(eklenmiş dosya)",
   "(forever)": "(sonsuz)",
   "(hidden)": "(gizli)",
-  "(no description)": "(açıklama yok)",
   "(no topic)": "(konu yok)",
-  "(or )": "",
+  "(or )": "(veya )",
   "(you)": "(sen)",
   "({message_retention_days} days)": "({message_retention_days} gün)",
   "/dark (Switch to the dark theme)": "/dark (Koyu temaya geç)",
   "/light (Switch to light theme)": "/light (Açık renk temaya geç)",
-  "/me is excited (Display action text)": "/me çoşkuluyum (Aksiyon metnini göster)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Bugün nerede yemek yiyelim? (Anket oluştur)",
-  "/todo (Create a todo list)": "/todo (Yeni yapılacaklar listesi oluştur)",
-  "1 day": "1 gun",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
+  "1 day": "1 gün",
   "1 hour": "1 saat",
   "1 week": "1 hafta",
   "10 days": "10 gün",
@@ -27,34 +26,34 @@
   "5 minutes": "5 dakika",
   "6 hours": "6 saat",
   "Total messages: {total_messages}": "Toplam ileti : {total_messages}",
-  "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "Kanal #{notifications_stream} içinde duyurulacak.
",
-  "You are searching for messages that are sent by more than one person, which is not possible.
": "",
-  "You are searching for messages that belong to more than one stream, which is not possible.
": "",
-  "You are searching for messages that belong to more than one topic, which is not possible.
": "",
-  "{name} (guest) is not subscribed to this stream. They will not be notified if you mention them.": "",
-  "{name} (guest) is not subscribed to this stream. They will not be notified unless you subscribe them.": "",
+  "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} dosyası paylaşıldığı mesajlardan silinecektir. Bu aksiyon geri alınamaz. 
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
+  "You are searching for messages that are sent by more than one person, which is not possible.
": "Birden fazla kişi tarafından gönderilen mesajları arıyorsunuz, bu mümkün değil.
",
+  "You are searching for messages that belong to more than one stream, which is not possible.
": "Birden fazla akışa ait mesajları arıyorsunuz, bu mümkün değildir.
",
+  "You are searching for messages that belong to more than one topic, which is not possible.
": "Birden fazla konuya ait mesajları arıyorsunuz, bu mümkün değil.
",
+  "{name} (guest) is not subscribed to this stream. They will not be notified if you mention them.": "{name} (misafir) bu kanala üye değil. Kendilerinden bahsederseniz bilgilendirilimezler.",
+  "{name} (guest) is not subscribed to this stream. They will not be notified unless you subscribe them.": "{name} (misafir) bu kanala üye değil. Abone yapmadığınız sürece kendilerine bildirim gitmeyecektir.",
   "{name} is not subscribed to this stream. They will not be notified if you mention them.": "{name} bu kanala abone değil. Kendilerinden bahsederseniz bilgilendirilmezler.",
   "{name} is not subscribed to this stream. They will not be notified unless you subscribe them.": "{name} bu kanala abone değil. Abone olmadıkça bilgilendirilmeyecektir.",
-  "{username} has {number_of_invites_by_user} unexpired invitations.": "",
-  "Subscribe": "",
-  "Click here to learn about exporting private streams and direct messages.": "",
+  "{username} has {number_of_invites_by_user} unexpired invitations.": "{username} ,  {number_of_invites_by_user} adet sonlanmamış davetiyeleri var.",
+  "Subscribe": "Abone Ol",
+  "Click here to learn about exporting private streams and direct messages.": "Özel akışları ve doğrudan mesajları dışa aktarma hakkında bilgi edinmek için buraya tıklayın.",
   "Upgrade for more space.": "Daha fazla alan için Yükseltme  ",
-  " to add a new line": "",
-  " to send": "",
-  " will have the same properties as it did prior to deactivation, including role, owner and stream subscriptions.": "",
-  " will have the same role, stream subscriptions, user group memberships, and other settings and permissions as they did prior to deactivation.": "",
-  "@{name} (guest)": "",
+  " to add a new line": " yeni bir satır eklemek için",
+  " to send": " göndermek için",
+  " will have the same properties as it did prior to deactivation, including role, owner and stream subscriptions.": ", rol, sahip ve akış abonelikleri de dahil olmak üzere devre dışı bırakılmadan önce sahip olduğu özelliklere sahip olacaktır.",
+  " will have the same role, stream subscriptions, user group memberships, and other settings and permissions as they did prior to deactivation.": " devre dışı bırakılmadan önce sahip olduğu rol, akış abonelikleri, kullanıcı grubu üyelikleri ve diğer ayar ve izinlere sahip olacaktır.",
+  "@{name} (guest)": "@{name} (misafir)",
   "A Topic Move already in progress.": "Konu taşıma işlemi devam ediyor.",
-  "A deactivated bot cannot send messages, access data, or take any other action.": "",
-  "A deactivated emoji will remain visible in existing messages and emoji reactions, but cannot be used on new messages.": "",
+  "A deactivated bot cannot send messages, access data, or take any other action.": "Devre dışı bırakılmış bir bot mesaj gönderemez, verilere erişemez veya başka herhangi bir işlem yapamaz.",
+  "A deactivated emoji will remain visible in existing messages and emoji reactions, but cannot be used on new messages.": "Devre dışı bırakılan bir emoji mevcut mesajlarda ve emoji tepkilerinde görünür kalmaya devam eder, ancak yeni mesajlarda kullanılamaz.",
   "A language is marked as 100% translated only if every string in the web, desktop, and mobile apps is translated, including administrative UI and error messages.": "Bir dil, yalnızca yönetim kullanıcı arabirimi ve hata iletileri dahil olmak üzere web, masaüstü ve mobil uygulamalardaki her kelime çevrilmişse %100 çevrilmiş olarak işaretlenir.",
-  "A poll must be an entire message.": "",
+  "A poll must be an entire message.": "Bir anket bütün bir mesajdan oluşmalıdır.",
   "A stream needs to have a name": "Kanalın bir adı olmalıdır",
   "A stream with this name already exists": "Bu adla bir kanal hali hazırda mevcut.",
-  "A user group needs to have a name": "",
-  "A user group with this name already exists": "",
-  "A wide image (200×25 pixels) for the upper left corner of the app.": "",
+  "A user group needs to have a name": "Bir kullanıcı grubunun bir adı olması gerekir",
+  "A user group with this name already exists": "Bu ada sahip bir kullanıcı grubu zaten mevcut",
+  "A wide image (200×25 pixels) for the upper left corner of the app.": "(200x25 piksel) boyutunda uygulamanın üst sol köşesi için geniş bir resim.",
   "API documentation": "API belgeleri",
   "API key": "API anahtarı (key)",
   "About Zulip": "Zulip hakkında",
@@ -63,57 +62,58 @@
   "Action": "Eylem",
   "Actions": "Eylemler",
   "Active": "Faal",
-  "Active an hour ago": "",
+  "Active an hour ago": "Bir saat önce aktif",
   "Active bots": "Faal botlar",
-  "Active more than 2 weeks ago": "",
+  "Active more than 2 weeks ago": "2 haftadan daha uzun süre önce aktif",
   "Active now": "Şu an faal",
   "Active users": "Faal kullanıcılar",
-  "Active yesterday": "",
-  "Active {days_old} days ago": "",
-  "Active {hours} hours ago": "",
-  "Active {last_active_date}": "",
-  "Active {minutes} minutes ago": "",
-  "Activity unknown": "",
+  "Active yesterday": "Dün aktif",
+  "Active {days_old} days ago": "{days_old} gün önce aktif",
+  "Active {hours} hours ago": "{hours} saat önce aktif",
+  "Active {last_active_date}": "Aktif {last_active_date}",
+  "Active {minutes} minutes ago": "{minutes} dakika önce aktif",
+  "Activity unknown": "Akivite bilinmiyor",
   "Add": "Ekle",
   "Add GIF": "GIF Ekle",
+  "Add a description": "",
   "Add a new alert word": "Yeni bir uyarı kelimesi ekle",
   "Add a new bot": "Yeni bir bot ekle",
   "Add a new code playground": "Yeni bir kod oyun alanı ekle",
-  "Add a new custom profile field": "",
+  "Add a new custom profile field": "Yeni bir özel profil alanı ekleme",
   "Add a new emoji": "Yeni bir emoji ekle",
   "Add a new linkifier": "Yeni bir linkifier ekle",
   "Add a new profile field": "Yeni bir profil alanı ekle",
   "Add alert word": "Uyarı kelimesi ekle",
-  "Add all users": "",
+  "Add all users": "Tüm kullanıcıları ekle",
   "Add another user...": "Bir kullanıcı daha ekle...",
   "Add code playground": "Kod oyun alanı ekle",
-  "Add default streams": "",
-  "Add email": "",
+  "Add default streams": "Varsayılan akışları ekleme",
+  "Add email": "Eposta ekle",
   "Add emoji": "Emoji ekle",
   "Add emoji reaction": "Emoji tepkisi ekle",
   "Add extra emoji for members of the {realm_name} organization.": "{realm_name} organizasyonunun üyeleri için fazladan emoji ekleyin.",
   "Add global time": "Evrensel zaman ekle",
   "Add linkifier": "Linkifier ekle",
-  "Add members": "",
-  "Add members. Use usergroup or #streamname to bulk add members.": "",
+  "Add members": "Üyeleri ekle",
+  "Add members. Use usergroup or #streamname to bulk add members.": "Üye ekleyin. Toplu üye eklemek için usergroup veya #streamname kullanın.",
   "Add one or more users": "Bir veya daha fazla kullanıcı ekle",
-  "Add option": "",
-  "Add poll": "",
+  "Add option": "Seçenek ekle",
+  "Add poll": "Anket ekle",
   "Add question": "Soru ekle",
   "Add stream": "Kanal ekle",
   "Add streams": "Kanal ekle",
   "Add subscribers": "Abone ekle",
-  "Add subscribers. Use usergroup or #streamname to bulk add subscribers.": "",
+  "Add subscribers. Use usergroup or #streamname to bulk add subscribers.": "Abone ekleyin. Aboneleri toplu olarak eklemek için usergroup veya #streamname kullanın.",
   "Add task": "Görev ekle",
   "Add video call": "Görüntülü çağrı ekle",
-  "Add voice call": "",
-  "Add your email to invite other users or convert to a permanent Zulip organization.": "",
+  "Add voice call": "Sesli arama ekle",
+  "Add your email to invite other users or convert to a permanent Zulip organization.": "E-postanızı diğer kullanıcıları davet et veya kalıcı bir Zulip organizasyonuna dönüştür bölümüne ekleyin.",
   "Added successfully!": "Başarıyla eklendi!",
-  "Added successfully.": "",
+  "Added successfully.": "Başarılı bir şekilde eklendi.",
   "Administrator": "Yönetici",
-  "Administrators and moderators this Zulip organization will be able to see this email address.": "",
+  "Administrators and moderators this Zulip organization will be able to see this email address.": "Bu Zulip organizasyonunun yöneticileri ve moderatörleri bu e-posta adresini görebileceklerdir.",
   "Administrators can delete any message.": "Yöneticiler herhangi bir iletiyi silebilir.",
-  "Administrators of this Zulip organization will be able to see this email address.": "",
+  "Administrators of this Zulip organization will be able to see this email address.": "Bu Zulip kuruluşunun yöneticileri bu e-posta adresini görebilecektir.",
   "Admins": "Yöneticiler",
   "Admins and moderators": "Yöneticiler ve moderatörler",
   "Admins only": "Sadece yöneticiler",
@@ -122,298 +122,301 @@
   "Admins, moderators and members, but only admins can add generic bots": "Yöneticiler, moderatörler, ve üyeler, fakat sadece yöneticiler genel bot ekleyebilir",
   "Admins, moderators, members and guests": "Yöneticiler, moderatörler, üyeler ve misafirler",
   "Advanced": "İleri Düzey",
-  "Advertise organization in the Zulip communities directory": "",
+  "Advertise organization in the Zulip communities directory": "Zulip toplulukları dizininde kuruluş reklamı yapın",
   "Alert word": "Uyarı kelimesi",
-  "Alert word \"{alert_word}\" removed successfully!": "",
+  "Alert word \"{alert_word}\" removed successfully!": "Uyarı kelimesi \"{alert_word}\" başarılı bir şekilde silindi!",
   "Alert word already exists!": "Uyarı kelimesi halihazırda mevcut!",
   "Alert words": "Uyarı kelimeleri",
   "Alert words allow you to be notified as if you were @-mentioned when certain words or phrases are used in Zulip. Alert words are not case sensitive.": "Uyarı kelimecikleri sizin aynı kullanıcı adınız ile uyarılmış gibi bildirim almanızı sağlar. Uyarı kelimecikleri büyük küçük harf duyarlı değildir.",
-  "Alerted messages": "",
-  "All direct messages": "",
-  "All groups": "",
+  "Alerted messages": "Uyarı mesajları",
+  "All direct messages": "Tüm doğrudan mesajlar",
+  "All groups": "Tüm gruplar",
   "All messages": "Tüm iletiler",
   "All messages including muted streams": "Sessize alınmış kanallar dahil tüm iletiler",
   "All streams": "Tüm kanallar",
   "All time": "Tüm zaman",
-  "All topics": "",
-  "All unmuted topics": "",
-  "All unread messages": "",
-  "All users will need to log in again at your new organization URL.": "",
-  "Allow creating web-public streams (visible to anyone on the Internet)": "",
+  "All topics": "Tüm konular",
+  "All unmuted topics": "Tüm sessiz konular",
+  "All unread messages": "Tüm okunmamış mesajlar",
+  "All users will need to log in again at your new organization URL.": "Tüm kullanıcıların yeni kuruluş URL'nizde yeniden oturum açması gerekecektir.",
+  "Allow creating web-public streams (visible to anyone on the Internet)": "Web üzerinden herkese açık akışlar oluşturmaya izin verin (İnternet'teki herkes tarafından görülebilir)",
   "Allow message content in message notification emails": "İleti bildirim e-postalarında ileti içeriğine izin ver",
   "Allow message editing": "İleti düzenlemesine izin ver",
-  "Allow other users to view read receipts": "",
+  "Allow other users to view read receipts": "Diğer kullanıcıların okundu makbuzlarını görüntülemesine izin verin",
   "Allow subdomains": "Alt alan adlarına izin ver",
   "Allowed domains": "İzin verilen alan adları",
   "Allowed domains: {domains}": "İzin verilen alan adları: {domains}",
-  "Already members:": "",
+  "Already members:": "Aktif üyeler:",
   "Already not subscribed.": "Zaten abone değil.",
   "Already subscribed to {stream}": "{stream} için zaten abone olunmuş",
   "Already subscribed users:": "Zaten abone olan kullanıcılar:",
-  "Already subscribed.": "",
+  "Already subscribed.": "Çoktan abone oldum.",
   "Always": "Her zaman",
-  "An API key can be used to programmatically access a Zulip account. Anyone with access to your API key has the ability to read your messages, send messages on your behalf, and otherwise impersonate you on Zulip, so you should guard your API key as carefully as you guard your password. 
 We recommend creating bots and using the bots' accounts and API keys to access the Zulip API, unless the task requires access to your account.": "Bir API anahtarı (key) Zulip'e program aracılığıyla ulaşmak için kullanılabilir. API anahtarınızı bilen herkes iletilerinizi okuma, sizin adınıza ileti gönderme, ve benzer şekilde Zulip'de yerinize hareket etme yetkisine sahiptir. Bu yüzden API anahtarınızı, parolanızı koruduğunuz gibi dikkatli korumalısınız. 
 Eğer yapmak istediğiniz işlem için kendi hesabınıza erişim gerekmiyorsa, bot veya botlar oluşturup Zulip'e bu bot hesaplarının API anahtarlarıyla ulaşmanızı tavsiye ederiz.",
+  "An API key can be used to programmatically access a Zulip account. Anyone with access to your API key has the ability to read your messages, send messages on your behalf, and otherwise impersonate you on Zulip, so you should guard your API key as carefully as you guard your password. 
 We recommend creating bots and using the bots' accounts and API keys to access the Zulip API, unless the task requires access to your account.": "Bir API anahtarı Zulip'e program aracılığıyla ulaşmak için kullanılabilir. API anahtarınızı bilen herkes iletilerinizi okuma, sizin adınıza ileti gönderme, ve benzer şekilde Zulip'de yerinize hareket etme yetkisine sahiptir. Bu yüzden API anahtarınızı, parolanızı koruduğunuz gibi dikkatli korumalısınız. 
 Eğer yapmak istediğiniz işlem için kendi hesabınıza erişim gerekmiyorsa, bot veya botlar oluşturup Zulip'e bu bot hesaplarının API anahtarlarıyla ulaşmanızı tavsiye ederiz.",
   "An hour ago": "1 saat önce",
   "An unknown error occurred.": "Bilinmeyen bir hata oluştu",
-  "Announce new stream in": "",
+  "Announce new stream in": "Yeni akışı duyurun",
   "Any organization administrator can conduct an export.": "Herhangi bir organizasyon üyesi dışa aktarım isteyebilir.",
   "Any time": "Herhangi bir zaman",
-  "Anyone can add more options after the poll is posted.": "",
+  "Anyone can add more options after the poll is posted.": "Anket yayınlandıktan sonra herkes daha fazla seçenek ekleyebilir.",
   "April": "Nisan",
-  "Archive ?": "",
+  "Archive ?": "Arşiv ?",
   "Archive stream": "Faal Kanal",
-  "Archiving stream  will immediately unsubscribe everyone. This action cannot be undone.": "",
-  "Archiving this stream will also disable settings that were configured to use this stream:": "",
-  "Are you sure you want to continue?": "",
+  "Archiving stream  will immediately unsubscribe everyone. This action cannot be undone.": " akışını arşivlemek herkesin aboneliğini derhal iptal edecektir. Bu eylem geri alınamaz.",
+  "Archiving this stream will also disable settings that were configured to use this stream:": "Bu akışı arşivlemek, bu akışı kullanmak üzere yapılandırılmış ayarları da devre dışı bırakacaktır:",
+  "Are you sure you want to continue?": "Devam etmek istediğine emin misin?",
   "Are you sure you want to create stream ''''{stream_name}'''' and subscribe {count} users to it?": "''''{stream_name}'''' kanalını oluşturmak ve ona {count} kullanıcı abone etmek istediğinizden emin misiniz?",
   "Are you sure you want to deactivate this organization?": "Bu organizasyonu devre dışı bırakmak istediğinizden emin misiniz?",
   "Are you sure you want to deactivate your account?": "Hesabınızı devre dışı bırakmak istediğinizden emin misiniz?",
-  "Are you sure you want to delete all drafts?  This action cannot be undone.": "",
+  "Are you sure you want to delete all drafts?  This action cannot be undone.": "Tüm taslakları silmek istediğinizden emin misiniz?  Bu eylem geri alınamaz.",
   "Are you sure you want to delete your profile picture?": "Profil resminizi silmek istediğinize emin misiniz?",
-  "Are you sure you want to mark all messages as read? This action cannot be undone.": "",
+  "Are you sure you want to mark all messages as read? This action cannot be undone.": "Tüm mesajları okundu olarak işaretlemek istediğinizden emin misiniz? Bu eylem geri alınamaz.",
   "Are you sure you want to mute {user_name}?  Messages sent by muted users will never trigger notifications, will be marked as read, and will be hidden.": "{user_name}  kullanıcısının sesini kapatmak istediğinizden emin misiniz? Sessiz kullanıcılar tarafından gönderilen iletiler hiçbir zaman bildirim tetiklemeyecek, okundu olarak işaretlenecek ve gizlenecektir.",
   "Are you sure you want to permanently delete {topic_name}?": "{topic_name} konusunu kalıcı olarak silmek istediğinizden emin misiniz?",
   "Are you sure you want to resend the invitation to ?": "Davetiyeyi yeniden göndermek istediğinizden emin misiniz  ?",
   "Are you sure you want to revoke the invitation to {email}?": "{email} adresine gönderilen daveti iptal etmek istediğinizden emin misiniz?",
   "Are you sure you want to revoke this invitation link created by {referred_by}?": "{referred_by} tarafından oluşturulan bu davet bağlantısını iptal etmek istediğinizden emin misiniz?",
-  "Are you sure you want to revoke this invitation link?": "",
-  "Are you sure you want to send @-mention notifications to the {subscriber_count} users subscribed to #{stream_name}? If not, please edit your message to remove the @{stream_wildcard_mention} mention.": "",
+  "Are you sure you want to revoke this invitation link?": "Bu davet bağlantısını iptal etmek istediğinizden emin misiniz?",
+  "Are you sure you want to send @-mention notifications to the {subscriber_count} users subscribed to #{stream_name}? If not, please edit your message to remove the @{stream_wildcard_mention} mention.": "#{stream_name} kanalına abone olmuş {subscriber_count}adet üyeye @-mention bildirimi göndermek istediğinize emin misiniz? Değilseniz lütfen mesajınızı düzenleyin ve @{stream_wildcard_mention}silin.",
   "Are you sure you want to unstar all messages in ?  This action cannot be undone.": " içindeki tüm iletilerin yıldızını kaldırmak istediğinizden emin misiniz? Bu işlem geri alınamaz.",
   "Are you sure you want to unstar all starred messages?  This action cannot be undone.": "Yıldızlı tüm iletilerin yıldızını kaldırmak istediğinizden emin misiniz? Bu işlem geri alınamaz.",
   "Ask me later": "Bana daha sonra sor",
   "At the office": "Ofiste",
-  "Audible": "",
+  "Audible": "Duyulabilinir",
   "Audible desktop notifications": "Sesli masa üstü bildirimleri",
   "August": "Ağustos",
   "Authentication methods": "Kimlik doğrulama yöntemleri",
   "Author": "Yazar",
-  "Automated messages and emails": "",
+  "Automated messages and emails": "Otomatik mesajlar ve e-postalar",
   "Automatic": "Otomatik",
-  "Automatic (follows system settings)": "",
-  "Automatically follow topics": "",
-  "Automatically follow topics where I'm mentioned": "",
-  "Automatically mark messages as read": "",
-  "Automatically unmute topics in muted streams": "",
-  "Available on Zulip Cloud Standard. Upgrade or request sponsorship to access.": "",
-  "Avatar changes are disabled in this organization": "",
+  "Automatic (follows system settings)": "Otomatik (sistem ayarlarını takip eder)",
+  "Automatically follow topics": "Konuları otomatik olarak takip et",
+  "Automatically follow topics where I'm mentioned": "Benden bahsedilen konuları otomatik olarak takip et",
+  "Automatically mark messages as read": "Mesajları otomatik olarak okundu olarak işaretle",
+  "Automatically unmute topics in muted streams": "Sessize alınan akışlardaki konuların sesini otomatik olarak açma",
+  "Available on Zulip Cloud Standard. Upgrade or request sponsorship to access.": "Zulip Cloud Standard'da mevcuttur. Upgrade veya request sponsorship ile erişebilirsiniz.",
+  "Avatar changes are disabled in this organization": "Bu organizasyonda avatar değişiklikleri devre dışı bırakılmıştır",
   "Avatar from Gravatar": "Gravatar'dan avatar",
   "Back to streams": "Kanallara geri dön",
-  "Because the original owner of this bot  is deactivated, you will become the owner for this bot.": "",
-  "Because you are removing the last subscriber from a private stream, it will be automatically archived.": "",
-  "Because you are the only organization owner, you cannot deactivate your account.": "",
-  "Because you are the only subscriber, this stream will be automatically archived.": "",
+  "Because the original owner of this bot  is deactivated, you will become the owner for this bot.": "Bu botun asıl sahibi  devre dışı bırakıldığı için, bu botun sahibi siz olacaksınız.",
+  "Because you are removing the last subscriber from a private stream, it will be automatically archived.": "Özel bir akıştan son aboneyi kaldırdığınız için, otomatik olarak arşivlenecektir.",
+  "Because you are the only organization owner, you cannot deactivate your account.": "Tek kuruluş sahibi siz olduğunuz için hesabınızı devre dışı bırakamazsınız.",
+  "Because you are the only subscriber, this stream will be automatically archived.": "Tek abone siz olduğunuz için bu akış otomatik olarak arşivlenecektir.",
   "Billing": "Faturalandırma",
   "Bold": "Kalın",
   "Bot": "Bot",
   "Bot email": "Bot e-posta",
   "Bot email (a-z, 0-9, and dashes only)": "Bot e-posta (a-z, 0-9, ve tireler)",
-  "Bot owner": "",
+  "Bot is deactivated": "",
+  "Bot owner": "Bot sahibi",
   "Bot type": "Bot türü",
   "Bots": "Botlar",
-  "Browse 1 more stream": "",
-  "Browse recent conversations": "",
+  "Browse 1 more stream": "1 akışa daha göz atın",
+  "Browse recent conversations": "Son konuşmalara göz atın",
   "Browse streams": "Kanallara göz atın",
-  "Browse {can_subscribe_stream_count} more streams": "",
-  "Bulleted list": "",
-  "Business": "",
+  "Browse {can_subscribe_stream_count} more streams": "Daha fazla kanalı {can_subscribe_stream_count} gez",
+  "Bulleted list": "Madde işaretli liste",
+  "Business": "İşletme",
   "Busy": "Meşgul",
   "By deactivating your account, you will be logged out immediately.": "Hesabınızı devre dışı yaptığınızda hemen sistemden çıkarılacaksınız.",
-  "Call provider": "",
+  "Call provider": "Çağrı sağlayıcı",
   "Cancel": "İptal",
   "Cancel compose": "Yazmayı iptal et.",
-  "Cancel compose and save draft": "",
-  "Cannot join group {name}": "",
-  "Cannot leave group {name}": "",
-  "Cannot send message while files are being uploaded.": "",
-  "Cannot subscribe to ": "",
-  "Cannot subscribe to private stream ": "",
-  "Cannot view stream": "",
-  "Card": "",
+  "Cancel compose and save draft": "Oluşturmayı iptal et ve taslağı kaydet",
+  "Cannot join group {name}": "{name} grubuna katılınamadı",
+  "Cannot leave group {name}": "{name} grubundan çıkılanamadı",
+  "Cannot send message while files are being uploaded.": "Dosyalar yüklenirken mesaj gönderilemiyor.",
+  "Cannot subscribe to ": "'e abone olunamıyor",
+  "Cannot subscribe to private stream ": " özel akışına abone olunamıyor",
+  "Cannot view stream": "Akış görüntülenemiyor",
+  "Card": "Kart",
   "Center the view around message ID .": "Görünümü ileti ID etrafında ortalayın .",
   "Change": "Değiştir",
-  "Change avatar": "",
+  "Change avatar": "Avatarı değiştir",
   "Change color": "Rengi değiştir",
   "Change email": "E-posta değiştir",
-  "Change group info": "",
+  "Change group info": "Grup bilgisini değiştir",
   "Change password": "Parola değiştir",
-  "Change setting": "",
+  "Change setting": "Ayarı değiştir",
   "Check all": "Tümünü seç",
   "Check your email ({email}) to confirm the new address.": "Yeni adresi onaylamak için e-postanızı ({email}) kontrol edin.",
   "Choose avatar": "Avatar seçiniz",
-  "Choose members": "",
-  "Choose subscribers": "",
+  "Choose members": "Üyeleri seçin",
+  "Choose subscribers": "Aboneleri seçin",
   "Clear avatar": "Avatarı temizle",
-  "Clear image": "",
+  "Clear image": "Net görüntü",
   "Clear profile picture": "Profil resimini temizle",
-  "Clear status": "",
-  "Clear topic": "",
-  "Clear your status": "",
+  "Clear status": "Durumu temizle",
+  "Clear topic": "Konuyu temizleyin",
+  "Clear your status": "Durumunuzu temizleyin",
   "Click here to reveal.": "Ortaya çıkarmak için buraya tıklayın.",
-  "Click on the pencil () icon to edit and reschedule a message.": "",
-  "Click to change notifications for this topic.": "",
-  "Click to view or download.": "",
+  "Click on the pencil () icon to edit and reschedule a message.": "Bir mesajı düzenlemek ve yeniden planlamak için kalem () simgesine tıklayın.",
+  "Click to change notifications for this topic.": "Bu konudaki bildirimleri değiştirmek için tıklayın.",
+  "Click to view or download.": "Görüntülemek veya indirmek için tıklayın.",
   "Close": "Kapat",
   "Close modal": "Modali Kapat",
   "Close this dialog window": "Bu iletişim penceresini kapat",
-  "Code": "",
+  "Code": "Kod",
   "Code playgrounds": "Kod oyun alanları",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "Oluşturmayı daralt",
-  "Collapse direct messages": "",
-  "Collapse message": "",
-  "Collapse views": "",
+  "Collapse direct messages": "Doğrudan mesajları daraltın",
+  "Collapse message": "Mesajı daralt",
+  "Collapse views": "Görünümleri daralt",
   "Collapse/show selected message": "Seçili iletileri daralt/göster",
-  "Community": "",
+  "Community": "Topluluk",
   "Commuting": "Trafikte",
-  "Compact": "",
+  "Compact": "Kompakt",
   "Complete": "Tamamlandı",
-  "Complete your organization profile, which is displayed on your organization's registration and login pages.": "",
+  "Complete your organization profile, which is displayed on your organization's registration and login pages.": "Kuruluşunuzun kayıt ve giriş sayfalarında görüntülenen kuruluş profilinizi tamamlayın.",
   "Compose message": "İleti oluştur",
   "Compose your message here": "İletinizi buraya giriniz",
   "Compose your message here...": "İletinizi buraya yazınız...",
   "Composing messages": "İleti oluşturma",
-  "Configure how Zulip notifies you about new messages. In muted streams, stream notification settings apply only to unmuted topics.": "",
-  "Configure regular expression patterns that will be used to automatically transform any matching text in Zulip messages and topics into links.": "",
+  "Configure how Zulip notifies you about new messages. In muted streams, stream notification settings apply only to unmuted topics.": "Zulip'in sizi yeni mesajlar hakkında nasıl bilgilendireceğini yapılandırın. Sessize alınmış akışlarda, akış bildirim ayarları yalnızca sessize alınmamış konular için geçerlidir.",
+  "Configure regular expression patterns that will be used to automatically transform any matching text in Zulip messages and topics into links.": "Zulip iletileri ve konularındaki eşleşen metinleri otomatik olarak bağlantılara dönüştürmek için kullanılacak düzenli ifade kalıplarını yapılandırın.",
   "Configure the default personal preference settings for new users joining your organization.": "Organizasyonunuza katılan y eni kullanıcılar için  varsayılan kişisel tercih ayarlarını  biçimlendirin. ",
   "Configure the authentication methods for your organization.": "Organizasyonunuz için kimlik doğrulama yöntemlerini yapılandırın.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Organizasyonunuza katılırken yeni kullanıcıların abone olduğu varsayılan kanalları yapılandırın.",
   "Confirm": "Onayla",
-  "Consider searching all public streams.": "",
-  "Contact a moderator to resolve this topic.": "",
-  "Contact a moderator to unresolve this topic.": "",
+  "Confirm changing access permissions": "",
+  "Consider searching all public streams.": "tüm genel akışları aradığınızı düşünün.",
+  "Contact a moderator to resolve this topic.": "Bu konuyu çözmek için bir moderatörle iletişime geçin.",
+  "Contact a moderator to unresolve this topic.": "Bu konuyu çözmek için bir moderatörle iletişime geçin.",
   "Contact support": "Desteğe ulaş",
-  "Convert": "",
+  "Convert": "Çevir",
   "Convert emoticons before sending (:) becomes 😃)": "Göndermeden önce emojileri dönüştür (:) 😃 olarak dönüşür)",
   "Cookie Bot": "Çerez botu",
   "Copied!": "Kopyalandı!",
-  "Copy URL": "",
-  "Copy address": "",
+  "Copy URL": "URL'yi kopyala",
+  "Copy address": "Adres kopyalayın",
   "Copy and close": "Kopyala ve kapat",
   "Copy code": "Kodu kopyala",
   "Copy link": "Bağlantıyı kopyala",
   "Copy link to message": "Bağlantıyı iletiye kopyala",
+  "Copy link to profile": "",
   "Copy link to topic": "Konuya bağlantıyı kopyala",
   "Copy mention syntax": "Bahsetme sözdizimini kopyala",
   "Copy version": "Sürümü kopyala",
   "Copy zuliprc": "zuliprc kopyala",
-  "Could not resolve topic": "",
-  "Could not unresolve topic": "",
+  "Could not resolve topic": "Konu çözümlenemedi",
+  "Could not unresolve topic": "Konu çözülemedi",
   "Create": "Oluştur",
-  "Create a poll": "",
+  "Create a poll": "Bir anket oluşturun",
   "Create a stream": "Kanal oluştur",
-  "Create a user group": "",
+  "Create a user group": "Kullanıcı grubu oluşturma",
   "Create new stream": "Yeni kanal oluştur",
-  "Create new user group": "",
+  "Create new user group": "Yeni kullanıcı grubu oluşturma",
   "Create stream": "Kanal oluştur",
-  "Create user group": "",
-  "Creating group...": "",
+  "Create user group": "Kullanıcı grubu oluşturma",
+  "Creating group...": "Grup oluşturma...",
   "Creating stream...": "Kanal oluşturuluyor...",
-  "Currently viewing all direct messages.": "",
-  "Currently viewing all messages.": "",
-  "Currently viewing the entire stream.": "",
+  "Currently viewing all direct messages.": "Şu anda tüm doğrudan mesajları görüntülüyor.",
+  "Currently viewing all messages.": "Şu anda tüm mesajlar görüntüleniyor.",
+  "Currently viewing the entire stream.": "Şu anda tüm kanal görüntüleniyor.",
   "Custom": "Özel",
-  "Custom URL": "",
+  "Custom URL": "Özel URL",
   "Custom emoji": "Özel emoji",
   "Custom language: {query}": "Özel dil: {query}",
   "Custom linkifier added!": "Özel linkifier eklendi!",
   "Custom playground added!": "Özel oyun alanı eklendi!",
   "Custom profile fields": "Özel profil alanları",
-  "Custom time": "",
+  "Custom time": "Özel zaman",
   "Cycle between stream narrows": "Kanal süzmeleri arasında geçiş yap",
-  "DIRECT MESSAGES": "",
-  "DM": "",
-  "DMs and mentions": "",
-  "DMs, mentions, and alerts": "",
-  "DMs, mentions, and followed topics": "",
-  "Dark": "",
+  "DIRECT MESSAGES": "DOĞRUDAN MESAJLAR",
+  "DM": "DM",
+  "DMs and mentions": "DM'ler ve bahsedenler",
+  "DMs, mentions, and alerts": "DM'ler, bahsedenler ve uyarılar",
+  "DMs, mentions, and followed topics": "DM'ler, bahsedenler ve takip edilen konular",
+  "Dark": "Koyu",
   "Dark theme": "Koyu renk tema",
-  "Dark theme logo": "",
+  "Dark theme logo": "Koyu tema logosu",
   "Data exports": "Veri dışa aktarımı",
   "Date muted": "Tarih kısıldı",
-  "Date updated": "",
+  "Date updated": "Güncellenme tarihi",
   "Date uploaded": "Yüklenme tarihi",
   "Day of the week to send digests": "Özetin gönderileceği haftanın günü",
   "Deactivate": "Devreden çıkar",
   "Deactivate account": "Hesabı devreden çıkar",
-  "Deactivate bot": "",
-  "Deactivate custom emoji?": "",
+  "Deactivate bot": "Botu devre dışı bırak",
+  "Deactivate custom emoji?": "Özel emojiyi devre dışı bırakma?",
   "Deactivate organization": "Organizasyonu devre dışı yap",
-  "Deactivate user": "",
+  "Deactivate user": "Kullanıcıyı devre dışı bırak",
   "Deactivate your account": "Kendi hesabını devreden çıkar",
-  "Deactivate {name}?": "",
+  "Deactivate {name}?": "{name} devre dışı bırak?",
   "Deactivated users": "Devre dışı kullanıcılar",
   "December": "Aralı",
-  "Default": "",
-  "Default for stream": "",
+  "Default": "Varsayılan",
+  "Default for stream": "Kanal için varsayılan",
   "Default is {language}. Use 'text' to disable highlighting.": "Varsayılan dile {language}. Vurgulamayı devre dışı bırakmak için 'text' kullanın.",
-  "Default language for code blocks": "",
+  "Default language for code blocks": "Kod blokları için varsayılan dil",
   "Default streams": "Varsayılan kanallar",
-  "Default streams for new users cannot be made private.": "",
-  "Default streams for this organization": "",
+  "Default streams for new users cannot be made private.": "Yeni kullanıcılar için varsayılan akışlar özel yapılamaz.",
+  "Default streams for this organization": "Bu kuruluş için varsayılan akışlar",
   "Default user settings": "Varsayılan kullanıcı ayarları",
   "Delay before sending message notification emails": "İleti bildirim e-postalarını göndermeden önce beklenecek süre",
-  "Delay period (minutes)": "",
+  "Delay period (minutes)": "Gecikme süresi (dakika)",
   "Delete": "Sil",
   "Delete alert word": "Uyarı kelimesini sil",
   "Delete all drafts": "Tüm taslakları sil",
-  "Delete all selected drafts": "",
-  "Delete code playground?": "",
-  "Delete custom profile field?": "",
-  "Delete data export?": "",
+  "Delete all selected drafts": "Seçilen tüm taslakları sil",
+  "Delete code playground?": "Kod oyun alanını silelim mi?",
+  "Delete custom profile field": "",
+  "Delete custom profile field?": "Özel profil alanı silinsin mi?",
+  "Delete data export?": "Veri aktarımı silinsin mi?",
   "Delete draft": "Taslak sil",
   "Delete file": "Dosya sil",
-  "Delete file?": "",
-  "Delete group": "",
+  "Delete file?": "Dosyayı sileyim mi?",
+  "Delete group": "Grup silme",
   "Delete icon": "Ikon sil",
-  "Delete linkifier?": "",
+  "Delete linkifier?": "Bağlayıcıyı silelim mi?",
   "Delete logo": "Logoyu sil",
   "Delete message": "İletiyi silin",
-  "Delete message?": "",
+  "Delete message?": "Mesajı sileyim mi?",
   "Delete profile picture": "Profil resmini sil",
-  "Delete scheduled message": "",
+  "Delete scheduled message": "Zamanlanmış mesajı sil",
   "Delete selected draft": "Seçili taslağı sil",
   "Delete topic": "Konuyu sil",
-  "Delete {user_group_name}?": "",
+  "Delete {user_group_name}?": "{user_group_name} sil?",
   "Deleted": "Silindi",
-  "Deleted option:": "",
-  "Deleted options:": "",
+  "Deleted option:": "Silinmiş seçenek:",
+  "Deleted options:": "Silinmiş seçenekler:",
   "Deleted successfully!": "Başarıyla silndi!",
-  "Deleting a message permanently removes it for everyone.": "",
+  "Deleting a message permanently removes it for everyone.": "Bir mesajı silmek, mesajı herkes için kalıcı olarak kaldırır.",
   "Deleting a topic will immediately remove it and its messages for everyone. Other users may find this confusing, especially if they had received an email or push notification related to the deleted messages.": "Bir konuyu silmek, onu ve iletilerini herkes için kaldırır. Diğer kullanıcılar, özellikle silinen iletilerle ilgili bir e-posta veya push bildirimi almışlarsa, bunu kafa karıştırıcı bulabilirler.",
   "Demote inactive streams": "Kullanılmayan kanalları devreden çıkar",
   "Dense mode": "Yoğun mod",
   "Depending on the size of your organization, an export can take anywhere from seconds to an hour.": "Organizasyon büyüklüğüne göre dışar aktarım saniyeler ile saat arasında sürebilir.",
   "Deprecation notice": "Son verme bilgilendirmesi",
   "Description": "Tanım",
-  "Deselect draft": "",
+  "Deselect draft": "Taslak seçimini kaldır",
   "Desktop": "Masaüstü",
   "Desktop & mobile apps": "Masa üstü & mobil uygulamalar",
   "Desktop message notifications": "Masaüstü ileti bildirimleri",
   "Detailed keyboard shortcuts documentation": "Detaylı klavye kısayol tuşları belgeleri",
   "Detailed message formatting documentation": "Detaylı ileti format dökümantasyonu",
-  "Detailed search filters documentation": "",
-  "Direct message": "",
-  "Direct message to me": "",
+  "Detailed search filters documentation": "Detaylı arama filtreleri dokümantasyonu",
+  "Direct message": "Direk mesaj",
+  "Direct message to me": "Bana doğrudan mesaj",
   "Direct messages": "Direkt mesajlar",
-  "Direct messages are disabled in this organization.": "",
-  "Direct messages disabled": "",
-  "Disable": "",
-  "Disable notifications?": "",
+  "Direct messages are disabled in this organization.": "Bu organizasyonda doğrudan mesajlar devre dışı bırakılmıştır.",
+  "Direct messages disabled": "Doğrudan mesajlar devre dışı",
+  "Disable": "Devre dışı",
+  "Disable notifications?": "Bildirimleri devre dışı mı bırakayım?",
   "Disabled": "Devre dışı",
   "Discard": "İptal et",
   "Dismiss for a week": "1 Haftalığına esgeç",
-  "Display availability to other users": "",
-  "Display my availability to other users": "",
-  "Display names of reacting users when few users have reacted to a message": "",
-  "Display on user card": "",
-  "Display “(guest)” after names of guest users": "",
-  "Do you still want to move the latest {total_messages_allowed_to_move, plural, one {message} other {# messages}}?": "",
+  "Display availability to other users": "Diğer kullanıcılara müsaitlik durumunu gösterme",
+  "Display my availability to other users": "Müsaitlik durumumu diğer kullanıcılara gösterme",
+  "Display names of reacting users when few users have reacted to a message": "Bir mesaja az sayıda kullanıcı tepki verdiğinde tepki veren kullanıcıların adlarını görüntüleme",
+  "Display on user card": "Kullanıcı kartında görüntüleme",
+  "Display “(guest)” after names of guest users": "Misafir kullanıcıların sonunu “(guest)” ekle",
+  "Do you still want to move the latest {total_messages_allowed_to_move, plural, one {message} other {# messages}}?": "Do you still want to move the latest {total_messages_allowed_to_move, plural, one {message} other {# messages}}?",
   "Do you want to add everyone?": "Herkesi eklemek istiyor musunuz?",
-  "Do you want to mark them all as read?": "",
+  "Do you want to mark them all as read?": "Hepsini okundu olarak işaretlemek ister misiniz?",
   "Domain": "Alan adı",
   "Don’t allow disposable email addresses": "Geçici e-posta adreslerine izin verme",
   "Download": "İndir",
-  "Download .zuliprc": ".zuliprc indir",
   "Download botserverrc": "botserverrc indir",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Tüm aktif dış yönlü webhook botlarının ayarlarını Zulip Botserver formatında indir.",
   "Download file": "Dosya indir",
@@ -422,59 +425,60 @@
   "Download {filename}": "{filename} dosyasını indirin",
   "Drafts": "Taslak",
   "Drafts are not synced to other devices and browsers.": "Taslaklar diğer cihaz ve tarayıcılar ile senkronize değildir.",
-  "Drafts from conversation with {recipient}": "",
-  "Drafts from {recipient}": "",
+  "Drafts from conversation with {recipient}": "{recipient} ile olan konuşma taslakları",
+  "Drafts from {recipient}": "{recipient} alıcısı için taslaklar",
   "Drafts older than {draft_lifetime} days are automatically removed.": "{draft_lifetime} günden eski taslaklar otomatik olarak kaldırılır.",
-  "Duration deletion is allowed after posting (minutes)": "",
-  "Duration editing is allowed after posting (minutes)": "",
+  "Duration deletion is allowed after posting (minutes)": "Gönderdikten sonra silme işlemine izin verilen süre (dakika)",
+  "Duration editing is allowed after posting (minutes)": "Gönderdikten sonra düzenlemeye izin verilen süre (dakika)",
   "EDITED": "DEĞİŞTİ",
   "Edit": "Düzenle",
   "Edit #{stream_name}": "Düzenle #{stream_name} ",
-  "Edit and reschedule message": "",
+  "Edit and reschedule message": "Mesajı düzenleyin ve yeniden planlayın",
   "Edit bot": "Botu düzenle",
-  "Edit custom profile field": "",
+  "Edit custom profile field": "Özel profil alanını düzenleme",
   "Edit linkfiers": "Linkifier düzenle",
   "Edit message": "İletiyi düzenle",
-  "Edit profile": "",
+  "Edit profile": "Profili düzenle",
   "Edit selected draft": "Seçili taslağı düzenle",
-  "Edit selected message or view source": "",
+  "Edit selected message or view source": "Seçili mesajı düzenleme veya kaynağı görüntüleme",
   "Edit status": "Durumu düzenle",
-  "Edit stream name and description": "",
+  "Edit stream name and description": "Akış adını ve açıklamasını düzenleme",
   "Edit topic": "Konuyu düzenle",
   "Edit user": "Kullanıcıyı düzenle",
   "Edit your last message": "Son iletinizi düzenleyin",
   "Edit your profile": "Profil düzenle",
-  "Edit {group_name}": "",
-  "Edited by {full_name}": "",
-  "Education (for-profit)": "",
-  "Education (non-profit)": "",
+  "Edit {group_name}": "{group_name} düzenle",
+  "Edited by {full_name}": "{full_name} tarafından düzenlendi",
+  "Education (for-profit)": "Eğitim (kâr amacı gütmeyen)",
+  "Education (non-profit)": "Eğitim (kar amacı gütmeyen)",
   "Effect": "Efekt",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "E-posta",
   "Email address": "E-posta adresi",
   "Email address changes are disabled in this organization.": "Bu organizasyonda e-posta adresi değişiklikleri devre dışı bırakıldı.",
   "Email copied": "E-posta kopyalandı",
-  "Email footers (e.g., signature)": "",
+  "Email footers (e.g., signature)": "E-posta altbilgileri (örn. imza)",
   "Email message notifications": "E-posta iletisi bildirimleri",
   "Email notifications": "E-posta bildirimleri",
   "Emails (one on each line or comma-separated)": "E-posta adresleri (her satırda bir tane veya virgül ile ayrılarak)",
-  "Emoji": "",
+  "Emoji": "Emoji",
   "Emoji name": "Emoji adı",
   "Emoji set changed successfully!": "Emoji seti başarıyla değiştirildi!",
   "Emoji theme": "Emoji teması",
   "Enable message edit history": "İleti düzenleme tarihçesini faal hale getir",
   "Enable notifications": "Bildirimleri etkinleştir",
-  "Enable read receipts": "",
+  "Enable read receipts": "Okuma makbuzlarını etkinleştirin",
   "Enabled": "Etkin",
-  "End of results from your history.": "",
+  "End of results from your history.": "geçmişinizdeki sonuçların sonu.",
   "Endpoint URL": "Endpoint URL",
   "Enter sends when composing a message": "Enter'e basıldığında ileti gönderilir",
   "Error": "Hata",
   "Error adding subscription": "Üyelik eklerken hata",
-  "Error checking subscription.": "",
+  "Error checking subscription.": "Abonelik kontrolünde hata.",
   "Error creating stream": "Kanal oluşturmada hata",
-  "Error creating user group.": "",
+  "Error creating user group.": "Kullanıcı grubu oluşturulurken hata oluştu.",
   "Error deleting message": "ileti silinirken hata oluştu",
-  "Error editing message": "",
+  "Error editing message": "Hata düzenleme mesajı",
   "Error fetching message edit history": "İleti düzenleme tarihçesini getirmede hata",
   "Error in unsubscribing from #{stream_name}": "#{stream_name} aboneliğinden çıkma hatası",
   "Error listing invites": "Davetiyeleri listelerken hata",
@@ -482,46 +486,46 @@
   "Error removing alert word!": "Uyarı kelimesi silmede hata!",
   "Error removing subscription": "Üyelik kaldırırken hata",
   "Error removing user from #{stream_name}": "Kullanıcı #{stream_name} içinden kaldırılırken hata oluştu",
-  "Error removing user from this group.": "",
+  "Error removing user from this group.": "Kullanıcı bu gruptan çıkarılırken hata oluştu.",
   "Error removing user from this stream.": "Bu kanaldan kullanıcı çıkarırken hata.",
   "Error saving edit": "Düzenlemeyi kaydederken hata oluştu",
   "Error: Cannot deactivate the only organization owner.": "Hata: Tek organizasyon sahibi devre dışı bırakılamaz.",
   "Error: Cannot deactivate the only user. You can deactivate the whole organization though in your organization profile settings.": "Hata: Tek kullanıcı devre dışı bırakılamıyor. Ancak tüm organizasyonu organizasyon profili ayarlarından  devre dışı bırakabilirsiniz.",
-  "Escape key navigates to home view": "",
+  "Escape key navigates to home view": "Escape tuşu ana görünüme gider",
   "Estimated messages per week": "Haftalık tahmini iletiler",
-  "Event or conference": "",
+  "Event or conference": "Etkinlik veya konferans",
   "Everyone": "Herkes",
-  "Everyone on the internet": "",
-  "Everyone sees global times in their own time zone.": "",
+  "Everyone on the internet": "İnternetteki herkes",
+  "Everyone sees global times in their own time zone.": "Herkes küresel saatleri kendi zaman diliminde görür.",
   "Everyone sees this in their own time zone.": "Bunu herkes kendi zaman diliminde görür.",
   "Exclude messages with topic .": "Konu içeren iletileri hariç tut .",
   "Exit search": "Aramadan çıkış",
   "Expand compose": "Oluşturmayı genişlet",
-  "Expand direct messages": "",
-  "Expand message": "",
-  "Expand views": "",
+  "Expand direct messages": "Doğrudan mesajları genişletin",
+  "Expand message": "Mesajı genişletin",
+  "Expand views": "Görünümleri genişletin",
   "Expires at": "Süre dolumu",
-  "Expires on {date} at {time}": "",
+  "Expires on {date} at {time}": "{date} ve {time} sona erecek",
   "Export failed": "Dışa aktarım başarız oldu",
-  "Export organization": "",
+  "Export organization": "İhracat organizasyonu",
   "Export started. Check back in a few minutes.": "Dışa aktarım başladı. Bir kaç dakika sonra kontrol ediniz.",
   "Exports all users, settings, and all data visible in public streams.": "Açık kanallardaki tüm kullanıcı, ayar ve veriler dışa aktarılır.",
   "External account type": "Dış hesap tipi",
   "External link": "Dış bağlantı",
   "Failed": "Başarısız oldu",
-  "Failed adding one or more streams.": "",
+  "Failed adding one or more streams.": "Bir veya daha fazla akış ekleme başarısız oldu.",
   "Failed to create video call.": "Video arama oluşturulamadı",
   "Failed to generate preview": "Önizleme oluşturmada hata oluştu",
   "Failed to upload %'{file}'": "%'{file}' yüklenemedi",
   "Failed!": "Başarısız oldu!",
   "Failed: A custom emoji with this name already exists.": "Başarısız: Bu ada sahip özel bir emoji zaten var.",
   "Failed: Emoji name is required.": "Başarısız: Emoji ismi gerekiyor.",
-  "Failed: There is a default emoji with this name. Only administrators can override default emoji.": "",
+  "Failed: There is a default emoji with this name. Only administrators can override default emoji.": "Başarısız: Bu ada sahip varsayılan bir emoji var. Yalnızca yöneticiler varsayılan emojiyi geçersiz kılabilir.",
   "February": "Şubat",
   "Field choices": "Alan seçimleri",
   "File": "Dosya",
   "File and image uploads have been disabled for this organization.": "Dosya ve resim yüklemeleri bu organizasyon için iptal edilmiştir.",
-  "File name: {filename}": "",
+  "File name: {filename}": "Dosya adı: {filename}",
   "File size must be at most {max_file_size} MiB.": "Dosya boyutu en fazla {max_file_size} MiB olmalıdır.",
   "File type is not supported.": "Dosya türü desteklenmiyor.",
   "Filter": "Süz",
@@ -529,102 +533,104 @@
   "Filter by category": "Kategorilere göre süz",
   "Filter code playgrounds": "Kod oyun alanlarını süzün",
   "Filter deactivated users": "Devre dışı bırakılmış kullanıcıları ayır",
-  "Filter default streams": "",
-  "Filter emoji": "",
+  "Filter default streams": "Varsayılan akışları filtreleme",
+  "Filter emoji": "Filtre emojisi",
   "Filter exports": "Dışa aktarımları süz",
-  "Filter groups": "",
+  "Filter groups": "Filtre grupları",
   "Filter invites": "Davetiyeleri süz",
   "Filter linkifiers": "Linkifierları süz",
-  "Filter members": "",
+  "Filter members": "Filtre üyeleri",
   "Filter muted users": "Sesi kapatılmış kullanıcıları süz",
   "Filter streams": "Kanalları süz",
-  "Filter subscribers": "",
+  "Filter subscribers": "Aboneleri filtrele",
   "Filter topics": "Konuları süz",
   "Filter topics (t)": "Konuları süz (t)",
-  "Filter uploaded files": "",
+  "Filter uploaded files": "Yüklenen dosyaları filtreleme",
   "Filter uploads": "Yüklemeleri süz",
   "Filter users": "Kullanıcıları süz",
   "First message": "İlk ileti",
   "First time? Read our guidelines for creating and naming streams.": "İlk kullanışınız mı?  Kanal oluşturmak ve adlandırmak için yönergeleri.",
-  "First time? Read our guidelines for creating user groups.": "",
-  "Follow": "",
-  "Followed": "",
-  "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
-  "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
-  "For more examples, see the help center documentation on adding linkifiers.": "",
-  "Forgot it?": "",
+  "First time? Read our guidelines for creating user groups.": "İlk defa mı yapıyorsunuz? Kullanıcı grupları oluşturmak için yönergelerimizi okuyun.",
+  "Follow": "Takip et",
+  "Followed": "Takip edildi",
+  "Followed topics": "Takip edilen konular",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
+  "For more examples and technical details, see the help center documentation on adding code playgrounds.": "Daha fazla örnek ve teknik ayrıntı için kod oyun alanları ekleme hakkındaki yardım merkezi belgelerine bakın.",
+  "For more examples, see the help center documentation on adding linkifiers.": "Daha fazla örnek için, bağlayıcı ekleme hakkındaki yardım merkezi belgelerine bakın.",
+  "Forgot it?": "Unuttun mu?",
   "Forked from upstream at {zulip_merge_base}": "{zulip_merge_base} konumunda yukarı kanaldan çatallandı",
   "Friday": "Cuma",
   "Full name": "Tam isim",
   "GIPHY attribution": "GIPHY ilişkilendirmesi",
   "GIPHY integration": "GIPHY entegrasyonu",
   "General": "Genel",
-  "Generate URL for an integration": "",
-  "Generate email address": "",
+  "Generate URL for an integration": "Entegrasyon için URL oluşturma",
+  "Generate email address": "E-posta adresi oluşturun",
   "Generate invite link": "Davet linki oluştur",
   "Generate new API key": "Yeni API key oluştur",
-  "Generate stream email address": "",
+  "Generate stream email address": "Akış e-posta adresi oluşturun",
   "Generating link...": "Link oluştur...",
   "Generic": "Genel",
   "Get API key": "API key al",
-  "Go back through viewing history": "",
-  "Go forward through viewing history": "",
-  "Go invisible": "",
-  "Go to #{display_recipient}": "",
-  "Go to #{display_recipient} > {topic}": "",
-  "Go to conversation": "",
-  "Go to direct messages with {display_reply_to_for_tooltip}": "",
-  "Go to home view": "",
-  "Go to stream settings": "",
+  "Go back through viewing history": "Görüntüleme geçmişine geri dönün",
+  "Go forward through viewing history": "Görüntüleme geçmişinde ileriye gidin",
+  "Go invisible": "Görünmez ol",
+  "Go to #{display_recipient}": "Git: #{display_recipient}",
+  "Go to #{display_recipient} > {topic}": "Git #{display_recipient} > {topic}",
+  "Go to conversation": "Sohbete git",
+  "Go to direct messages with {display_reply_to_for_tooltip}": "{display_reply_to_for_tooltip} ile olan grup direk mesajlarına git",
+  "Go to home view": "Ana görünüme git",
+  "Go to stream settings": "Akış ayarlarına gidin",
   "Got it": "Anlaşıldı",
   "Got it!": "Tamam !",
-  "Government": "",
+  "Government": "Devlet",
   "Grant Zulip the Kerberos tickets needed to run your Zephyr mirror via Webathena": "Grat Zulip the Kerberos Biletlerini Webatena ile Zephyr'ınızı çalıştırmak için gerekli",
-  "Group permissions": "",
-  "Group settings": "",
+  "Group permissions": "Grup izinleri",
+  "Group settings": "Grup ayarları",
   "Guest": "Misafir",
   "Guests": "Misafirler",
   "Guests cannot edit custom emoji.": "Misafir kullanıcılar özel emojileri düzenleyemezler.",
-  "Header": "",
+  "Header": "Başlık",
   "Help center": "Yardım merkezi",
-  "Help menu": "",
+  "Help menu": "Yardım menüsü",
   "Hide muted message again": "Sessize alınan iletiyi tekrar gizle",
   "Hide password": "Parolayı gizle",
   "Hide starred message count": "İşaretli ileti sayısını gizle",
   "High contrast mode": "Yüksek kontrast modu",
   "Hint": "İpucu",
   "Hint (up to 80 characters)": "İpucu (80 karaktere kadar)",
-  "Home view": "",
-  "How would you like to invite users?": "",
-  "However, it will no longer be subscribed to the private streams that you are not subscribed to.": "",
+  "Home view": "Ev görünümü",
+  "How would you like to invite users?": "Kullanıcıları nasıl davet etmek istersiniz?",
+  "However, it will no longer be subscribed to the private streams that you are not subscribed to.": "Ancak, abone olmadığınız özel akışlara artık abone olunmayacaktır.",
   "Humans": "İnsanlar",
   "Idle": "Eylemsiz",
-  "If you don't know your password, you can reset it.": "",
-  "If you haven't updated your name, it's a good idea to do so before inviting other users to join you!": "",
+  "If you don't know your password, you can reset it.": "Parolanızı bilmiyorsanız, parolanızı sıfırlayabilirsiniz.",
+  "If you haven't updated your name, it's a good idea to do so before inviting other users to join you!": "Adınızı güncellemediyseniz, diğer kullanıcıları size katılmaya davet etmeden önce bunu yapmanız iyi bir fikirdir!",
   "Ignored deactivated users:": "Yok sayılan devre dışı bırakılan kullanıcılar:",
   "Image": "Resim",
   "In a meeting": "Toplantıda",
-  "In muted streams, stream notification settings apply only to unmuted topics.": "",
-  "Inactive": "",
+  "In muted streams, stream notification settings apply only to unmuted topics.": "Sessize alınmış akışlarda, akış bildirim ayarları yalnızca sessize alınmamış konular için geçerlidir.",
+  "In this conversation": "",
+  "In this stream": "",
+  "Inactive": "Devre dışı",
   "Inactive bots": "Devre dışı botlar",
-  "Inbox": "",
-  "Include DMs": "",
-  "Include content of direct messages in desktop notifications": "",
+  "Inbox": "Gelen kutusu",
+  "Include DMs": "DM'leri dahil edin",
+  "Include content of direct messages in desktop notifications": "Doğrudan mesajların içeriğini masaüstü bildirimlerine dahil etme",
   "Include message content in message notification emails": "İleti bildirim e-postalarına ileti içeriğini dahil et",
   "Include organization name in subject of message notification emails": "İleti bildirim e-postalarının konusuna organizasyon adını dahil edin",
-  "Includes muted streams and topics": "",
+  "Includes muted streams and topics": "Sessiz akışları ve konuları içerir",
   "Initiate a search": "Bir arama başlat",
   "Insert new line": "Yeni satır ekle",
-  "Integration": "",
-  "Integration URL will appear here.": "",
+  "Integration": "Entegrasyon",
+  "Integration URL will appear here.": "Entegrasyon URL'si burada görünecektir.",
   "Integrations": "Entegrasyonlar",
   "Interface": "Arayüz",
   "Invalid URL": "Geçersiz URL",
-  "Invalid stream ID": "",
+  "Invalid stream ID": "Geçersiz akış kimliği",
   "Invalid time format: {timestamp}": "Geçersiz saat biçimi: {timestamp}",
-  "Invalid user": "",
-  "Invalid users": "",
+  "Invalid user": "Geçersiz kullanıcı",
+  "Invalid users": "Geçersiz kullanıcılar",
   "Invitation expires after": "Davet süre sonu",
   "Invitations": "Davetler",
   "Invitations are required for joining this organization": "Bu organizasyona katılmak için davetiye gereklidir",
@@ -641,76 +647,78 @@
   "Inviting...": "Davet ediyor...",
   "Italic": "Yatık",
   "January": "Ocak",
-  "Jitsi server URL": "",
-  "Join group": "",
-  "Join group {name}": "",
-  "Join video call.": "",
-  "Join voice call.": "",
-  "Join {realm_name}": "",
+  "Jitsi server URL": "Jitsi sunucu URL'si",
+  "Join group": "Gruba katılın",
+  "Join group {name}": "{name} grubuna katıl",
+  "Join video call.": "Video görüşmesine katılın.",
+  "Join voice call.": "Sesli aramaya katılın.",
+  "Join {realm_name}": "{realm_name} katıl",
   "Joined": "Bağlandı",
-  "Joined {date_joined}": "",
+  "Joined {date_joined}": "{date_joined} tarihinde katılındı",
   "Joining the organization": "Organizasyona katılmak",
   "July": "Temmuz",
   "June": "Haziran",
   "Just now": "Az önce",
   "Keyboard shortcuts": "Klavye kısa yolları",
-  "LaTeX": "",
+  "LaTeX": "LaTeX",
   "Label": "Etiket",
   "Language": "Dil",
-  "Language for automated messages and invitation emails": "",
+  "Language for automated messages and invitation emails": "Otomatik mesajlar ve davet e-postaları için dil",
   "Large number of subscribers": "Büyük sayıda üye",
   "Last 10 days": "Son 10 Gün",
   "Last 2 months": "Son 2 Ay",
   "Last 30 days": "Son 30 Gün",
   "Last 6 months": "Son 6 Ay",
   "Last active": "Son aktiflik",
-  "Last edited {last_edit_timestr}.": "",
+  "Last edited {last_edit_timestr}.": "Son düzenleme: {last_edit_timestr}.",
   "Last message": "Son ileti",
   "Last modified": "Son değiştirilme",
-  "Last moved {last_edit_timestr}.": "",
+  "Last moved {last_edit_timestr}.": "Son taşıma {last_edit_timestr}.",
   "Learn more": "Daha fazla öğren",
-  "Learn more about mentions here.": "",
-  "Learn more about starring messages here.": "",
-  "Leave group": "",
-  "Leave group {name}": "",
-  "Leave {group_name}": "",
-  "Let others see when I've read messages": "",
-  "Let recipients see when I'm typing direct messages": "",
-  "Let recipients see when I'm typing messages in streams": "",
-  "Let recipients see when a user is typing direct messages": "",
-  "Let recipients see when a user is typing stream messages": "",
-  "Light": "",
+  "Learn more about mentions here.": "Mansiyonlar hakkında daha fazla bilgiyi burada bulabilirsiniz.",
+  "Learn more about starring messages here.": "Başrol mesajları hakkında daha fazla bilgi edinin burada.",
+  "Leave group": "Gruptan ayrılın",
+  "Leave group {name}": "{name} grubundan ayrıl",
+  "Leave {group_name}": "{group_name} ayrıl",
+  "Let others see when I've read messages": "Mesajları ne zaman okuduğumu başkaları görsün",
+  "Let recipients see when I'm typing direct messages": "Doğrudan mesaj yazarken alıcılar görsün",
+  "Let recipients see when I'm typing messages in streams": "Akışlarda mesaj yazarken alıcıların görmesine izin verin",
+  "Let recipients see when a user is typing direct messages": "Bir kullanıcı doğrudan mesaj yazarken alıcıların bunu görmesini sağlayın",
+  "Let recipients see when a user is typing stream messages": "Bir kullanıcı akış mesajlarını yazarken alıcıların görmesini sağlayın",
+  "Light": "Açık",
   "Light theme": "Açık tema",
-  "Light theme logo": "",
+  "Light theme logo": "Işık temalı logo",
   "Link": "Link",
   "Link with Webathena": "Webathena ile bağlantı kur",
   "Link:": "Bağlantı:",
   "Linkifiers": "Linkifiers",
-  "Linkifiers make it easy to refer to issues or tickets in third party issue trackers, like GitHub, Salesforce, Zendesk, and others. For instance, you can add a linkifier that automatically turns #2468 into a link to the GitHub issue in the Zulip repository with:": "",
-  "Load more": "",
-  "Loading…": "",
+  "Linkifiers make it easy to refer to issues or tickets in third party issue trackers, like GitHub, Salesforce, Zendesk, and others. For instance, you can add a linkifier that automatically turns #2468 into a link to the GitHub issue in the Zulip repository with:": "Bağlayıcılar GitHub, Salesforce, Zendesk ve diğerleri gibi üçüncü taraf sorun izleyicilerindeki sorunlara veya destek taleplerine başvurmayı kolaylaştırır. Örneğin, #2468'i otomatik olarak Zulip deposundaki GitHub sorununa bir bağlantıya dönüştüren bir bağlayıcı ekleyebilirsiniz:",
+  "Load more": "Daha fazla yükle",
+  "Loading…": "Yükleniyor...",
   "Local time": "Mahalli zaman",
   "Log in": "Giriş",
-  "Log in to browse more streams": "",
+  "Log in to browse more streams": "Daha fazla akışa göz atmak için giriş yapın",
   "Log out": "Çıkış yap",
   "Looking for our integrations or API documentation?": " Entegrasyon veya API belgelerimizi mi arıyorsunuz?",
-  "MOVED": "",
-  "Main menu": "",
-  "Make all messages my home view": "",
-  "Make inbox my home view": "",
-  "Make recent conversation my home view": "",
-  "Make organization permanent": "",
-  "Manage bot": "",
-  "Manage this bot": "",
+  "MOVED": "TAŞINDI",
+  "Main menu": "Ana menü",
+  "Make all messages my home view": "tüm mesajları ana görünümüm yap",
+  "Make inbox my home view": "inbox'ı ana görünümüm yap",
+  "Make recent conversation my home view": "son konuşmayı ana görünümüm yapın",
+  "Make organization permanent": "Organizasyonu kalıcı hale getirin",
+  "Manage bot": "Botu yönet",
+  "Manage this bot": "Bu botu yönetin",
   "Manage this user": "Bu kullanıcıyı yönet",
   "Manage user": "Kullanıcıyı yönet",
+  "Manage your API key": "",
   "March": "Mart",
   "Mark all messages as read": "Tüm iletileri okunmuş işaretle",
-  "Mark all messages as read?": "",
+  "Mark all messages as read?": "Tüm mesajları okundu olarak mı işaretleyeyim?",
+  "Mark all messages as unread": "",
   "Mark as read": "Okundu işaretle",
   "Mark as resolved": "Çözüldü olarak işaretle",
-  "Mark as unread from here": "",
-  "Mark as unread from selected message": "",
+  "Mark as unread from here": "Buradan itibaren okunmadı işaretle",
+  "Mark as unread from selected message": "Seçili mesajdan okunmadı olarak işaretle",
   "Mark as unresolved": "Çözümlenmemiş olarak işaretle",
   "Marketing team": "Pazarlama takımı",
   "Marking all messages as read…": "Tüm iletileri okundu olarak işaretle...",
@@ -718,68 +726,70 @@
   "Me": "Ben",
   "Member": "Üye",
   "Members": "Üyeler",
-  "Mention a time-zone-aware time": "",
+  "Mention a time-zone-aware time": "Zaman dilimine duyarlı bir zamandan bahsedin",
   "Mentioned in": "Anılan yer",
   "Mentions": "Anmalar",
   "Menus": "Menüler",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "İleti #{stream_name}",
   "Message #{stream_name} > {topic_name}": "İleti #{stream_name} > {topic_name}",
   "Message actions": "İleti eylemleri",
-  "Message deletion": "",
+  "Message deletion": "Mesaj silme",
   "Message edit history": "İleti düzenleme tarihçesi",
   "Message editing": "İleti değiştirme",
   "Message formatting": "İleti biçemleme",
-  "Message length shouldn't be greater than 10000 characters.": "",
+  "Message length shouldn't be greater than 10000 characters.": "Mesaj uzunluğu 10000 karakterden fazla olmamalıdır.",
   "Message length shouldn't be greater than {max_length} characters.": "İleti uzunluğu {max_length} karakterden fazla olmamalıdır.",
   "Message retention": "İleti tutma",
   "Message retention period": "İleti tutma periyodu",
   "Message {recipient_label}": "İleti {recipient_label}",
   "Message {recipient_names}": "İleti {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "İleti {recipient_name} ({recipient_status})",
-  "Messages in all public streams": "",
-  "Messages sent by you": "",
-  "Messages sent by {sender}": "",
-  "Messages will not be automatically marked as read because this is not a conversation view. Change setting": "",
-  "Messages will not be automatically marked as read. Change setting": "",
+  "Messages": "İletiler",
+  "Messages in all public streams": "Tüm genel akışlardaki mesajlar",
+  "Messages sent by you": "Sizin tarafınızdan gönderilen mesajlar",
+  "Messages sent by {sender}": "Mesajlar {sender} tarafından gönderilmiştir",
+  "Messages will not be automatically marked as read because this is not a conversation view. Change setting": "Bu bir konuşma görünümü olmadığı için mesajlar otomatik olarak okundu olarak işaretlenmeyecektir. Ayar değiştir",
+  "Messages will not be automatically marked as read. Change setting": "Mesajlar otomatik olarak okundu olarak işaretlenmeyecektir. Ayar değiştir",
   "Mobile": "Mobil",
   "Mobile message notifications": "Mobil ileti bildirimleri",
   "Mobile notifications": "Mobil bildirimler",
-  "Mobile push notifications are not enabled on this server.": "",
-  "Mobile push notifications are not enabled on this server. Learn more": "",
+  "Mobile push notifications are not enabled on this server.": "Bu sunucuda mobil anlık bildirimler etkinleştirilmemiştir.",
+  "Mobile push notifications are not enabled on this server. Learn more": "Bu sunucuda mobil anlık bildirimler etkinleştirilmemiştir. Daha fazla bilgi edinin",
   "Moderator": "Moderatör",
   "Moderators": "Moderatörler",
   "Monday": "Pazartesi",
-  "Monday at {time}": "",
+  "Monday at {time}": "Pazartesi saat {time}",
   "Move all messages in {topic_name}": "{topic_name} içindeki tüm iletileri taşı",
-  "Move all messages in this topic": "",
-  "Move message": "",
-  "Move messages": "",
-  "Move messages or topic": "",
-  "Move only this message": "",
-  "Move some messages?": "",
-  "Move this and all following messages in this topic": "",
+  "Move all messages in this topic": "Bu konudaki tüm mesajları taşı",
+  "Move message": "Mesajı taşı",
+  "Move messages": "Mesajları taşıyın",
+  "Move messages or topic": "Mesajları veya konuyu taşıma",
+  "Move only this message": "Sadece bu mesajı taşıyın",
+  "Move some messages?": "Bazı mesajları taşıyalım mı?",
+  "Move this and all following messages in this topic": "Bu ve bundan sonraki tüm mesajları bu konuya taşıyın",
   "Move topic": "Konu taşı",
-  "Moved by {full_name}": "",
-  "Moving messages": "",
+  "Moved by {full_name}": "{full_name} tarafından taşındı",
+  "Moving messages": "Hareketli mesajlar",
   "Must be invited by a subscriber; new subscribers can only see messages sent after they join; hidden from non-administrator users": "Bir abone tarafından davet edilmelidir; yeni aboneler yalnızca üye olduktan sonra gönderilen iletileri görebilir; yönetici olmayan kullanıcılardan gizli",
   "Must be invited by a subscriber; new subscribers can view complete message history; hidden from non-administrator users": "Bir abone tarafından davet edilmelidir; yeni aboneler tam ileti geçmişini görüntüleyebilir; yönetici olmayan kullanıcılardan gizli",
-  "Mute": "",
+  "Mute": "Sessiz",
   "Mute stream": "Kanalı sustur",
   "Mute this user": "Bu kullanıcının sesini kapat",
   "Mute topic": "Konuyu susturun",
   "Mute user": "Kullanıcıyı sessize al",
   "Muted": "Sessize alındı",
   "Muted user": "Sessize alınan kullanıcı",
-  "Muted user (guest)": "",
+  "Muted user (guest)": "Sessiz kullanıcı (misafir)",
   "Muted users": "Sessize alınan kullanıcılar",
   "Name": "İsim",
   "Name changes are disabled in this organization. Contact an administrator to change your name.": "Bu organizasyonda isim değişiklikleri iptal edilmiştir. İsim değişikliği için sistem yöneticisine başvurunuz.",
-  "Narrow to all direct messages": "",
+  "Narrow to all direct messages": "Tüm doğrudan mesajlara daraltın",
   "Narrow to all unmuted messages": "Sesi kısılmamış tüm iletilere süz",
   "Narrow to current compose box recipient": "Güncel ileti alıcılarına süz",
-  "Narrow to direct messages that include .": "",
-  "Narrow to direct messages with .": "",
-  "Narrow to direct messages.": "",
+  "Narrow to direct messages that include .": " içeren doğrudan iletilere daraltın.",
+  "Narrow to direct messages with .": " ile doğrudan mesajlara daraltın.",
+  "Narrow to direct messages.": "Doğrudan mesajlara daraltın.",
   "Narrow to just message ID .": "Yalnızca ileti kimliğine kadar süz .",
   "Narrow to messages containing images.": "Resim barındıran iletilere süz.",
   "Narrow to messages containing links.": "Bağlantı barındıran iletilere süz.",
@@ -791,11 +801,11 @@
   "Narrow to messages that mention you.": "Sizi anan iletilere süzün.",
   "Narrow to messages with alert words.": "Uyarı kelimeleri bulunana iletilere süz.",
   "Narrow to messages with topic .": "Konuyu içeren iletilere süz  .",
-  "Narrow to next unread direct message": "",
+  "Narrow to next unread direct message": "Bir sonraki okunmamış doğrudan mesaja daralt",
   "Narrow to next unread topic": "Bir sonraki okunmamış konuya süz",
   "Narrow to starred messages.": "Yıldızı iletilere süz.",
-  "Narrow to stream from topic view": "",
-  "Narrow to topic or DM conversation": "",
+  "Narrow to stream from topic view": "Konu görünümünden akışa daraltma",
+  "Narrow to topic or DM conversation": "Konuya veya DM görüşmesine daraltın",
   "Narrow to unread messages.": "Okunmamış iletilere süz.",
   "Narrow to {message_recipient}": "{message_recipient} 'a süz",
   "Narrowing": "Süzme",
@@ -804,116 +814,114 @@
   "Never ask on this computer": "Bu bilgisayarda bir daha sorma",
   "Never expires": "Süresiz",
   "New": "Yeni",
-  "New direct message": "",
+  "New direct message": "Yeni doğrudan mesaj",
+  "New direct message from {sender_full_name}": "",
   "New email": "Yeni e-posta",
   "New message": "Yeni ileti",
   "New option": "Yeni seçenek",
   "New password": "Yeni parola",
   "New password is too weak": "Yeni parola çok zayıf",
-  "New stream announcements": "",
+  "New stream announcements": "Yeni akış duyuruları",
   "New stream message": "Yeni kanal iletisi",
-  "New stream notifications": "",
+  "New stream notifications": "Yeni akış bildirimleri",
   "New task": "Yeni görev",
   "New topic": "Yeni konu",
-  "New user announcements": "",
-  "New user notifications": "",
+  "New user announcements": "Yeni kullanıcı duyuruları",
+  "New user notifications": "Yeni kullanıcı bildirimleri",
   "Next message": "Sonraki ileti",
-  "Next unread direct message": "",
-  "Next unread followed topic": "",
+  "Next unread direct message": "Sonraki okunmamış direkt mesaj",
+  "Next unread followed topic": "Sonraki okunmamış takip edilen konu",
   "Next unread topic": "Sonraki okunmamış konu",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Şu anki süzmeyle eşleşen bot bulunmuyor.",
-  "No conversations match your filters.": "",
-  "No custom emojis found.": "",
-  "No custom emojis match your current filter.": "",
-  "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
-  "No default streams match your current filter.": "",
+  "No conversations match your filters.": "Filtrelerinizle eşleşen konuşma yok.",
+  "No custom emojis match your current filter.": "Mevcut filtrenizle eşleşen özel emoji yok.",
+  "No custom profile field configured for this organization.": "Bu kuruluş için yapılandırılmış özel profil alanı yok.",
+  "No default streams match your current filter.": "Mevcut filtrenizle eşleşen varsayılan akış yok.",
   "No description.": "Tanım yok.",
-  "No drafts selected": "",
+  "No drafts selected": "Seçilen taslak yok",
   "No drafts.": "Taslak yok.",
-  "No exports found.": "",
-  "No group members match your current filter.": "",
-  "No invites found.": "",
+  "No group members match your current filter.": "Geçerli filtrenizle eşleşen grup üyesi yok.",
   "No invites match your current filter.": "Şu anki süzmeyle eşleşen davetiye bulunmuyor.",
   "No language set": "Dil ayarlanmadı",
-  "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Linkifier oluşturulmadı.",
-  "No matching results": "",
-  "No matching streams": "",
+  "No linkifiers configured.": "",
+  "No linkifiers match your current filter.": "Mevcut filtrenizle eşleşen bağlantı tanımlayıcı yok.",
+  "No matching results": "Eşleşen sonuç yok",
+  "No matching streams": "Eşleşen akış yok",
   "No matching users.": "Eşleşen kullanıcı yok.",
   "No one has read this message yet.": "Bu mesajı henüz kimse okumadı.",
   "No owner": "Organizasyon yöneticisiz yok",
   "No playgrounds configured.": "Yapılandırılmış oyun alanı yok.",
-  "No playgrounds match your current filter.": "",
+  "No playgrounds match your current filter.": "Mevcut filtrenizle eşleşen oyun alanı yok.",
   "No restrictions": "Kısıtlama yok",
-  "No scheduled messages.": "",
-  "No search results.": "",
-  "No status text": "",
-  "No stream subscribers match your current filter.": "",
+  "No scheduled messages.": "Planlanmış mesaj yok.",
+  "No search results.": "Arama sonucu yok.",
+  "No status text": "Durum metni yok",
+  "No stream subscribers match your current filter.": "Mevcut filtrenizle eşleşen akış abonesi yok.",
   "No stream subscriptions.": "Kanal aboneliği yok.",
   "No streams": "Kanal yok",
   "No topics are marked as resolved.": "Hiçbir konu çözüldü olarak işaretlenmedi.",
   "No topics match your current filter.": "Şuanki süzme ile eşleşen konu yok.",
-  "No uploaded files match your current filter.": "",
+  "No uploaded files match your current filter.": "Yüklenen hiçbir dosya mevcut filtrenizle eşleşmiyor.",
+  "No user found": "",
   "No user group subscriptions.": "Kullanıcı grubu aboneliği yok.",
-  "No user groups": "",
+  "No user groups": "Kullanıcı grubu yok",
   "No user to subscribe.": "Abone olacak kullanıcı yok",
   "No users match your current filter.": "Şu anki süzmeyle eşleşen kullanıcı bulunmuyor.",
-  "No users to add.": "",
+  "No users to add.": "Eklenecek kullanıcı yok.",
   "No, I'll catch up.": "Hayır, iletileri okuyacağım.",
   "Nobody": "Hiç kimse",
-  "Nobody in this Zulip organization will be able to see this email address.": "",
-  "Non-profit (registered)": "",
+  "Nobody in this Zulip organization will be able to see this email address.": "Bu Zulip organizasyonundaki hiç kimse bu e-posta adresini göremeyecektir.",
+  "Non-profit (registered)": "Kâr amacı gütmeyen (kayıtlı)",
   "None": "Hiçbiri",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Yönettiğiniz botların devre dışı kalacağını unutmayın.",
   "Note that organizations are limited to five exports per week.": "Organizasyonların haftada 5 defa dışa aktarım ile sınırlandırıldığını unutmayınız.",
   "Nothing to preview": "Önizleme yapacak bir şey yok",
-  "Notification of account deactivation on {realm_name}": "",
+  "Notification of account deactivation on {realm_name}": "{realm_name} üzerinde hesap devre dışı alma bildirimi",
   "Notification settings": "Bildirim ayarları",
   "Notification sound": "Bildirim sesi",
   "Notification triggers": "Bildirim tetikleri",
   "Notifications": "Bildirimler",
   "Notifications for @all/@everyone mentions": "@all/@everyone için bildirimler",
-  "Notify recipients": "",
-  "Notify stream": "",
-  "Notify this user by email?": "",
-  "Notify topic": "",
+  "Notify recipients": "Alıcıları bilgilendir",
+  "Notify stream": "Kanalı bilgilendir",
+  "Notify this user by email?": "Bu kullanıcıyı e-posta ile bilgilendirin mi?",
+  "Notify topic": "Konuyu bilgilendir",
   "November": "Kasım",
-  "Now following {stream_topic}.": "",
-  "Numbered list": "",
+  "Now following {stream_topic}.": "Takip ediliyor: {stream_topic}.",
+  "Numbered list": "Numaralandırılmış liste",
   "October": "Eki",
   "Old password": "Eski parola",
-  "Once you leave this group, you will not be able to rejoin.": "",
+  "Once you leave this group, you will not be able to rejoin.": "Bu gruptan ayrıldıktan sonra tekrar katılmanız mümkün olmayacaktır.",
   "Once you leave this stream, you will not be able to rejoin.": "Bu kanaldan ayrıldıktan sonra tekrar katılamazsınız.",
   "One or more email addresses...": "Bir veya daha fazla e-posta adresi...",
   "One or more of these users do not exist!": "Bir veya daha fazla kullanıcı bulunamadı!",
-  "Only 2 custom profile fields can be displayed on the user card.": "",
-  "Only group members can add users to a group.": "",
+  "Only 2 custom profile fields can be displayed on the user card.": "Kullanıcı kartında yalnızca 2 özel profil alanı görüntülenebilir.",
+  "Only group members can add users to a group.": "Yalnızca grup üyeleri bir gruba kullanıcı ekleyebilir.",
   "Only in conversation views": "Sadece konuşma görünümü içindeyken",
   "Only organization administrators can edit these settings": "Bu ayarları yalnızca organizasyon yöneticileri düzenleyebilir",
   "Only organization administrators can edit these settings.": "Bu ayarları sadece organizasyon yöneticileri değiştirebilir.",
   "Only organization owners can edit these settings.": "Sadece organizasyon sahipleri bu ayarları düzenleyebilir.",
-  "Only organization owners may deactivate an organization.": "",
-  "Only owners can change these settings.": "",
-  "Only stream members can add users to a private stream.": "",
-  "Only subscribers can access or join private streams, so you will lose access to this stream if you convert it to a private stream while not subscribed to it.": "",
-  "Only subscribers to this stream can edit stream permissions.": "",
-  "Only topics you follow": "",
+  "Only organization owners may deactivate an organization.": "Bir kuruluşu yalnızca kuruluş sahipleri devre dışı bırakabilir.",
+  "Only owners can change these settings.": "Bu ayarları yalnızca sahipler değiştirebilir.",
+  "Only stream members can add users to a private stream.": "Yalnızca akış üyeleri özel bir akışa kullanıcı ekleyebilir.",
+  "Only subscribers can access or join private streams, so you will lose access to this stream if you convert it to a private stream while not subscribed to it.": "Özel akışlara yalnızca aboneler erişebilir veya katılabilir, bu nedenle abone değilken bu akışı özel bir akışa dönüştürürseniz erişiminizi kaybedersiniz.",
+  "Only subscribers to this stream can edit stream permissions.": "Yalnızca bu akışa abone olanlar akış izinlerini düzenleyebilir.",
+  "Only topics you follow": "Sadece takip ettiğiniz konular",
   "Open": "Aç",
-  "Open help menu": "",
+  "Open help menu": "Yardım menüsünü açın",
   "Open message menu": "İleti menüsünü aç",
-  "Open personal menu": "",
+  "Open personal menu": "Kişisel menüyü açın",
   "Open reactions menu": "Tepkiler menüsünü aç",
-  "Open-source project": "",
+  "Open-source project": "Açık kaynaklı proje",
   "Option already present.": "Bu ayar zaten mevcut.",
   "Optional": "İsteğe bağlı",
-  "Options": "",
+  "Options": "Seçenekler",
   "Organization": "Organizasyon",
   "Organization URL": "Organizasyon URL'si",
   "Organization administrators": "Organizasyon yöneticileri",
-  "Organization administrators can change the announcement stream in the organization settings.": "",
+  "Organization administrators can change the announcement stream in the organization settings.": "Organizasyon yöneticileri organizasyon ayarlarından duyuru akışını değiştirebilir.",
   "Organization administrators can reactivate deactivated users.": "Organizasyon yöneticileri devredışı bırakılmış kullanıcıları yeniden etkinleştirebilir.",
   "Organization description": "Organizasyon açıklaması",
   "Organization logo": "Organizasyon logosu",
@@ -931,10 +939,11 @@
   "Other emails": "Diğer e-postalar",
   "Other permissions": "Diğer izinler",
   "Other settings": "Diğer ayarlar",
-  "Other users in this Zulip organization will be able to see this email address.": "",
+  "Other users in this Zulip organization will be able to see this email address.": "Bu Zulip organizasyonundaki diğer kullanıcılar bu e-posta adresini görebilecektir.",
+  "Others": "",
   "Out sick": "Tatilde",
   "Outgoing webhook message format": "Dışarı yönlü webhook ileti biçimi",
-  "Override default emoji?": "",
+  "Override default emoji?": "Varsayılan emojiyi geçersiz kılma?",
   "Owner": "Organizasyon Yöneticisi",
   "Owner: {name}": "Organizasyon Yöneticisi: {name}",
   "Owners": "Organizasyon Yöneticileri",
@@ -946,27 +955,27 @@
   "Password should be at least {length} characters long": "Parola en az {length} karakter uzunluğunda olmalıdır",
   "Pattern": "Pattern",
   "Personal": "Kişiye özel",
-  "Personal menu": "",
+  "Personal menu": "Kişisel menü",
   "Personal settings": "Kişisel ayarlar",
   "Pin stream to top": "Bu kanalı başa sabitle",
   "Pin stream to top of left sidebar": "Kanalı kenar çubuğunun tepesine sabitle",
   "Pinned": "Sabitlenmiş",
-  "Plan management": "",
+  "Plan management": "Plan yönetimi",
   "Plans and pricing": "Plan ve fiyatladırmalar",
   "Play sound": "Sesi çal",
-  "Please contact support for an exception or add users with a reusable invite link.": "",
+  "Please contact support for an exception or add users with a reusable invite link.": "Lütfen bir istisna için destekle iletişime geçin veya kullanıcıları yeniden kullanılabilir bir davet bağlantısı ile ekleyin.",
   "Please ask a billing administrator to increase the number of licenses or deactivate inactive users, and try again.": "Lütfen bir faturalandırma yöneticisinden şunları yapmasını isteyin: lisans sayısını artırmak veya etkin olmayan kullanıcıları devre dışı bırak , ve yeniden deneyin.",
   "Please choose a new password": "Lütfen yeni bir şifre seçiniz",
-  "Please enter a question.": "",
+  "Please enter a question.": "Lütfen bir soru girin.",
   "Please enter your password": "Lütfen şifrenizi giriniz",
   "Please just upload one file.": "Lütfen sadece bir dosya yükleyiniz.",
-  "Please only use characters that are valid in an email address": "",
+  "Please only use characters that are valid in an email address": "Lütfen yalnızca bir e-posta adresinde geçerli olan karakterleri kullanın",
   "Please re-enter your password to confirm your identity.": "Lütfen kimliğinizi doğrulamak için parolanızı yeniden giriniz.",
   "Please specify a stream.": "Lütfen bir kanal belirtin.",
-  "Please specify at least one valid recipient.": "",
-  "Political group": "",
-  "Posted by {full_name}": "",
-  "Preferences": "",
+  "Please specify at least one valid recipient.": "Lütfen en az bir geçerli alıcı belirtin.",
+  "Political group": "Siyasi grup",
+  "Posted by {full_name}": "{full_name} tarafından paylaşıldı",
+  "Preferences": "Ayarlar",
   "Press > for list of topics": "Konu listesi için > basınız",
   "Prevent users from changing their avatar": "Kullanıcıların avatarlarını değiştirmesine izin verme",
   "Prevent users from changing their email address": "Kullanıcıların kendi e-posta adreslerini değiştirmelerini engelle",
@@ -977,55 +986,56 @@
   "Previous message": "Önceki ileti",
   "Privacy": "Mahremiyet",
   "Privacy settings": "Gizlilik ayarları",
-  "Private streams cannot be default streams for new users.": "",
+  "Private streams cannot be default streams for new users.": "Özel akışlar yeni kullanıcılar için varsayılan akışlar olamaz.",
   "Private, protected history": "Özel, korumalı geçmiş",
   "Private, shared history": "Özel, paylaşılan geçmiş",
   "Profile": "Profil",
   "Pronouns": "Zamiler",
   "Public": "Genel",
-  "Question": "",
-  "Quote": "",
+  "Question": "Soru",
+  "Quote": "Alıntı",
   "Quote and reply": "Alıntılayarak yanıtla",
   "Quote and reply to message": "İleti alıntılayarak yanıtla",
-  "Quoted original email (in replies)": "",
+  "Quoted original email (in replies)": "Alıntı yapılan orijinal e-posta (yanıtlarda)",
   "React to selected message with": "Seçili iletiye tepki verme şekli",
   "Reactivate": "Yeniden faal yap",
   "Reactivate bot": "Botu yeniden faal yap",
-  "Reactivate this bot": "",
-  "Reactivate this user": "",
-  "Reactivate user": "",
-  "Reactivate {name}": "",
+  "Reactivate this bot": "Bu botu yeniden etkinleştirin",
+  "Reactivate this user": "Bu kullanıcıyı yeniden etkinleştirin",
+  "Reactivate user": "Kullanıcıyı yeniden etkinleştir",
+  "Reactivate {name}": "{name} yeni etkinleştir",
   "Read receipts": "Okundu raporları",
-  "Read receipts are currently disabled in this organization.": "",
+  "Read receipts are currently disabled in this organization.": "Bu organizasyonda okuma makbuzları şu anda devre dışı bırakılmıştır.",
   "Read receipts are not available for Notification Bot messages.": "Bildirim Bot'u mesajları için okundu raporları mevcut değildir.",
-  "Receives new stream announcements": "",
-  "Recent conversations": "",
+  "Receives new stream announcements": "Yeni akış duyurularını alır",
+  "Recent conversations": "Son konuşmalar",
   "Remove": "Kaldır",
   "Remove from default": "Varsayılandan kaldır",
-  "Removed successfully.": "",
-  "Rename topic": "",
-  "Rename topic to:": "",
-  "Reply @-mentioning sender": "",
-  "Reply directly to sender": "",
-  "Reply mentioning bot": "",
+  "Removed successfully.": "Başarıyla kaldırıldı.",
+  "Rename topic": "Konuyu yeniden adlandır",
+  "Rename topic to:": "Konuyu yeniden adlandırın:",
+  "Reply @-mentioning sender": "Yanıtla @-gönderenden bahsederek",
+  "Reply directly to sender": "Doğrudan gönderene yanıt verin",
+  "Reply mentioning bot": "Bottan bahseden yanıt",
   "Reply mentioning user": "Kullanıcıyı bahsederek yanıtla",
   "Reply to message": "İletiyi yanıtla",
-  "Reply to selected conversation": "",
+  "Reply to selected conversation": "Seçilen konuşmaya yanıt ver",
   "Reply to selected message": "Seçilen iletiyi yanıtla",
-  "Request education pricing": "",
+  "Request education pricing": "Eğitim fiyatlandırması talep edin",
   "Request sponsorship": "Sponsorluk iste",
   "Requesting user": "İstek kullanıcısı",
   "Require topics in stream messages": "Kanal iletilerinde konuyu zorunlu hale getir",
   "Research": "Araştırma",
   "Resend": "Tekrar gönder",
-  "Resend invitation": "Daveti yeniden gönder",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Yeniden gönderirken hata oluştu. Lütfen tekrar yükleyip bir daha deneyiniz.",
-  "Reset zoom": "",
+  "Reset to default notifications": "",
+  "Reset zoom": "Yakınlaştırmayı sıfırla",
   "Restore draft": "Taslağı geri getir",
   "Restrict email domains of new users?": "Yeni kullanıcıların e-posta alan adını kısıtla?",
   "Restrict to a list of domains": "Alan adı listesine kısıtlama getir",
   "Retain forever": "Sonsuza dek sakla",
-  "Retention period (days)": "",
+  "Retention period (days)": "Saklama süresi (gün)",
   "Retry": "Tekrar dene",
   "Revoke": "Yetkiyi al",
   "Revoke invitation link": "Davetiye linki iptal et",
@@ -1041,47 +1051,48 @@
   "Saved as draft": "Taslak olarak kaydet",
   "Saved. Please reload for the change to take effect.": "Kaydedildi. Değişikliğin yürürlüğe girmesi için  tekrar yükle.",
   "Saving": "Kaydediliyor",
-  "Schedule for {deliver_at}": "",
-  "Schedule for {formatted_send_later_time}": "",
-  "Schedule message": "",
-  "Scheduled messages": "",
+  "Schedule for {deliver_at}": "{deliver_at} için zamanlandı",
+  "Schedule for {formatted_send_later_time}": "{formatted_send_later_time} için zamanlandı",
+  "Schedule message": "Program mesajı",
+  "Scheduled messages": "Zamanlanmış mesajlar",
   "Scroll down": "Aşağı kaydır",
-  "Scroll down to view your message.": "",
+  "Scroll down to view your message.": "Mesajınızı görüntülemek için aşağı kaydırın.",
   "Scroll through streams": "Kanallar arasında kaydırma yap",
-  "Scroll to bottom": "",
+  "Scroll to bottom": "Aşağıya kaydırın",
   "Scroll up": "Yukarı kaydır",
   "Search": "Ara",
   "Search GIFs": "GIF ara",
   "Search all public streams in the organization.": "Organizasyon içinde tüm açık kanallarda arama yap",
-  "Search filters": "",
+  "Search filters": "Arama filtreleri",
   "Search for  in the topic or message content.": "İleti veya konu içeriğinde ara.",
   "Search people": "Kişi ara",
   "Search results": "Sonuçları ara",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "E-posta ayarlamayı öğrenin.",
   "Select a stream": "Kanal seçin",
   "Select a stream below or change topic name.": "Aşağıdan bir kanal seçin veya konu ismini değiştirin.",
-  "Select a stream to subscribe": "",
-  "Select all drafts": "",
-  "Select an integration": "",
-  "Select draft": "",
+  "Select a stream to subscribe": "Abone olmak için bir kanal seçin",
+  "Select all drafts": "Tüm taslakları seç",
+  "Select an integration": "Bir entegrasyon seçin",
+  "Select draft": "Taslak seçin",
   "Select emoji": "Emoji seçin",
-  "Select language": "",
-  "Select stream": "",
+  "Select language": "Dil seçin",
+  "Select stream": "Kanal seçin",
   "Send": "Gönder",
-  "Send all notifications to a single topic": "",
-  "Send an email": "",
-  "Send automated notice to new topic": "",
-  "Send automated notice to old topic": "",
+  "Send all notifications to a single topic": "Tüm bildirimleri tek bir konuya gönderme",
+  "Send an email": "Bir e-posta gönderin",
+  "Send automated notice to new topic": "Yeni konuya otomatik bildirim gönderme",
+  "Send automated notice to old topic": "Eski konuya otomatik bildirim gönderme",
   "Send digest emails when I'm away": "Ben uzaktayken özet e-postası gönder",
   "Send digest emails when user is away": "Kullanıcı uzaktayken özet e-postaları gönder",
-  "Send direct message": "",
+  "Send direct message": "Direk mesaj gönder",
   "Send email notifications for new logins to my account": "Hesabıma yapılan yeni girişler için e-posta bildirimi gönder",
   "Send emails introducing Zulip to new users": "Yeni kullanıcılara Zulip tanıtım e-postası gönder",
   "Send me Zulip's low-traffic newsletter (a few emails a year)": "Bana Zulip'in düşük trafikli haber bültenini gönder (yılda birkaç e-posta)",
   "Send message": "İleti gönder",
-  "Send mobile notifications even if I'm online": "",
-  "Send mobile notifications even if user is online": "",
-  "Send options": "",
+  "Send mobile notifications even if I'm online": "Çevrimiçi olsam bile mobil bildirimler gönderin",
+  "Send mobile notifications even if user is online": "Kullanıcı çevrimiçi olsa bile mobil bildirimler gönderin",
+  "Send options": "Gönderme seçenekleri",
   "Send weekly digest emails to inactive users": "Aktif olamayan kullanıcılara haftalık özet gönder",
   "Sent!": "Gönderildi!",
   "Sent! Your message is outside your current narrow.": "Gönderildi! İletiniz aktif kanalın dışında.",
@@ -1099,204 +1110,213 @@
   "Show images in thread": "Başlık altındaki resimleri göster",
   "Show keyboard shortcuts": "Klavye kısa yollarını göster",
   "Show less": "Daha az göster",
-  "Show message sender's user card": "",
+  "Show message sender's user card": "Mesajı gönderenin kullanıcı kartını göster",
   "Show more": "Daha fazla göster",
   "Show password": "Parolayı göster",
   "Show previews of linked websites": "Bağlantı eklenen web sitelerinin ön izlemesini göster",
-  "Show previews of uploaded and linked images and videos": "",
+  "Show previews of uploaded and linked images and videos": "Yüklenen ve bağlantılı resim ve videoların önizlemelerini gösterme",
   "Show starred message count": "İşaretli ileti sayısını göster",
-  "Show status text": "",
-  "Show unread counts for": "",
-  "Show/change your API key": "API anahtarını göster/değiştir",
-  "Showing messages since {time_string}.": "",
+  "Show status text": "Durum metnini göster",
+  "Show unread counts for": "Şunlar için okunmamış sayıları göster",
+  "Showing messages since {time_string}.": "{time_string} itibaren mesajları göster.",
   "Sign up": "Kayıt ol",
   "Silent mentions do not trigger notifications.": "Sessiz anmalar bildirimleri tetiklemez.",
   "Size": "Boyut",
   "Slack compatible": "Slack uyumlu",
   "Slack's outgoing webhooks": "Slack'in dış yönlü webhookları",
   "Some common words were excluded from your search.": "Bazı yaygın kelimeler aramanız dışına alındı",
-  "Some older messages are unavailable. Upgrade your organization to access your full message history.": "",
+  "Some older messages are unavailable. Upgrade your organization to access your full message history.": "Bazı eski mesajlar kullanılamıyor. Tüm mesaj geçmişinize erişmek için kuruluşunuzu yükseltin.",
   "Sort by estimated weekly traffic": "Tahmini haftalık trafiğe göre sırala",
   "Sort by name": "İsme göre sırala",
   "Sort by number of subscribers": "Kayıtlı kullanıcı sayısına göre sırala",
-  "Sort by unread message count": "",
+  "Sort by unread message count": "Okunmamış mesaj sayısına göre sırala",
   "Spoiler": "Spoiler",
-  "Sponsorship request pending": "",
-  "Standard view": "",
+  "Sponsorship request pending": "Sponsorluk talebi beklemede",
+  "Standard view": "Standart görünüm",
   "Star": "Yıldız",
   "Star selected message": "Seçili iletiyi yıldızla",
-  "Star this message": "",
+  "Star this message": "Bu mesajı yıldızla",
   "Starred messages": "Yıldızlı iletiler",
-  "Start a new topic or select one from the list.": "",
-  "Start export of public data": "",
-  "Start new conversation": "",
+  "Start a new topic or select one from the list.": "Yeni bir konu başlatın veya listeden bir konu seçin.",
+  "Start export of public data": "Kamu verilerinin dışa aktarımını başlatın",
+  "Start new conversation": "Yeni görüşme başlatın",
   "Status": "Durum",
   "Stream": "Kanal",
   "Stream color": "Kanal rengi",
   "Stream created recently": "Kanal yakın zamanda oluşturuldu",
   "Stream creation": "Kanal oluşturma",
   "Stream description": "Kanal tanımı",
-  "Stream email address:": "",
+  "Stream email address:": "Kanal e-posta adresi:",
   "Stream name": "Kanal adı",
   "Stream permissions": "Kanal izinleri",
   "Stream settings": "Kanal ayarları",
   "Stream successfully created!": "Kanal başarıyla oluşturuldu!",
   "Streams": "Kanallar",
   "Streams they should join": "Katılmaları gereken kanallar",
-  "Strikethrough": "",
+  "Strikethrough": "Üstünü çiz",
   "Subject": "Konu",
   "Subscribe": "Abone ol",
   "Subscribe them": "Abone yapın",
-  "Subscribe to ": "",
+  "Subscribe to ": "'e abone olun",
   "Subscribe to/unsubscribe from selected stream": "Seçili kanala üye ol / üyelikten çık",
-  "Subscribe {full_name} to streams": "",
+  "Subscribe {full_name} to streams": "{full_name} kanallara üye yap",
   "Subscribed": "Abonelikler",
   "Subscribed streams": "Abone olunan kanallar",
   "Subscribed successfully!": "Üye olma işlemi başarılı!",
   "Subscriber count": "Abone sayısı",
   "Subscribers": "Aboneler",
-  "Successfully subscribed user:": "",
+  "Successfully subscribed user:": "Kullanıcı başarıyla abone oldu:",
   "Successfully subscribed users:": "Başarıyla abone olan kullanıcılar:",
   "Sunday": "Pazar",
   "Support Zulip": "Zulip'i Destekle",
   "Switch between tabs": "Sekmeler arasında geçiş yap",
-  "Switch to dark theme": "",
-  "Switch to light theme": "",
+  "Switch to dark theme": "Koyu temaya geçme",
+  "Switch to light theme": "Işık temasına geçin",
   "System bot": "Sistem botu",
   "Task already exists": "Bu görev zaten var",
-  "Task list": "",
+  "Task list": "Görev listesi",
   "Test desktop notification": "Masaüstü bildirimlerini test et",
-  "The administrators provided the following comment:": "",
+  "The administrators provided the following comment:": "Yöneticiler aşağıdaki yorumu yapmışlardır:",
   "The basics": "Temel konular",
-  "The group description cannot contain newline characters.": "",
-  "The recipient {recipient} is not valid.": "",
-  "The recipients {recipients} are not valid.": "",
-  "The sender's email address": "",
-  "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
+  "The group description cannot contain newline characters.": "Grup açıklaması satırsonu karakterleri içeremez.",
+  "The recipient {recipient} is not valid.": "{recipient} geçerli bir alıcı değil.",
+  "The recipients {recipients} are not valid.": "{recipients} geçerli alıcılar değil.",
+  "The sender's email address": "Gönderenin e-posta adresi",
+  "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "#{stream_name} kanalı mevcut değildir. Kanallar sayfasından aboneliklerinizi yönetin.",
   "The stream description cannot contain newline characters.": "Kanal açıklaması yeni satır karakteri içeremez.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Kullandıkları parola sistemimizden silinecek ve yönettikleri tüm botlar devre dışı olacaktır.",
   "Theme": "Tema",
+  "There are no bots.": "",
   "There are no current alert words.": "Hiç alarm kelimesi yok.",
-  "There are no messages here.": "",
-  "There are no streams you can view in this organization.": "",
-  "There are no unread messages in your inbox.": "",
-  "There are no user groups you can view in this organization.": "",
-  "There is a default emoji with this name. Do you want to override it with a custom emoji? The name :{emoji_name}: will no longer work to access the default emoji.": "",
-  "They administer the following bots:": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
+  "There are no messages here.": "Burada mesaj yok.",
+  "There are no streams you can view in this organization.": "Bu organizasyonda görüntüleyebileceğiniz herhangi bir akış bulunmamaktadır.",
+  "There are no unread messages in your inbox.": "Gelen kutunuzda okunmamış mesaj yok.",
+  "There are no user groups you can view in this organization.": "Bu organizasyonda görüntüleyebileceğiniz herhangi bir kullanıcı grubu bulunmamaktadır.",
+  "There is a default emoji with this name. Do you want to override it with a custom emoji? The name :{emoji_name}: will no longer work to access the default emoji.": "Bu isimle varsayılan bir emoji var. Bu özel emojiyi üzerine yazmak istiyor musunuz? :{emoji_name}: artık varsayılan emoji için kullanılamayacaktır.",
+  "They administer the following bots:": "Aşağıdaki botları yönetirler:",
   "This Zulip server is running an old version and should be upgraded.": "Zulip sunucusu eski versiyonda çalışmaktadır ve güncellenmelidir.",
-  "This action cannot be undone.": "",
+  "This action cannot be undone.": "Bu işlem geri alınamaz.",
   "This action is permanent and cannot be undone. All users will permanently lose access to their Zulip accounts.": "Bu işlem kalıcıdır ve geri alınamaz. Tüm kullanıcılar kalıcı olarak Zulip hesaplarına erişimlerini kaybedecekler.",
-  "This bot cannot be deactivated.": "",
-  "This bot cannot be edited.": "",
-  "This bot has been deactivated.": "",
-  "This conversation may have additional messages not shown in this view.": "",
-  "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
-  "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
-  "This group has no members.": "",
-  "This is a demo organization and will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
-  "This is not a publicly accessible conversation.": "",
+  "This bot cannot be deactivated.": "Bu bot devre dışı bırakılamaz.",
+  "This bot cannot be edited.": "Bu bot düzenlenemez.",
+  "This bot has been deactivated.": "Bu bot devre dışı bırakıldı.",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
+  "This conversation may have additional messages not shown in this view.": "Bu görüşmede, bu görünümde gösterilmeyen ek mesajlar olabilir.",
+  "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Bu demo organizasyonu {days_remaining} gün içerisinde silinecektir, ta ki kalıcı organizasyona çevriline kadar.",
+  "This feature is available on Zulip Cloud Plus. Upgrade to access.": "Bu özellik Zulip Cloud Plus'ta mevcuttur. Erişmek için yükseltin.",
+  "This group has no members.": "Bu grubun üyesi yoktur.",
+  "This is a demo organization and will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "Bu bir {days_remaning} güç içerisinde otomatik olarak silinecek olan bir demo organizasyondur , ta ki kalıcı organizasyona çevriline kadar.",
+  "This is not a publicly accessible conversation.": "Bu, halkın erişimine açık bir görüşme değildir.",
   "This is what a Zulip notification looks like.": "Zulip bildirimi buna benzer.",
-  "This is your home view.": "",
-  "This message could not be sent at the scheduled time.": "",
-  "This message is no longer scheduled to be sent.": "",
+  "This is your home view.": "Bu sizin ev manzaranız.",
+  "This message could not be sent at the scheduled time.": "Bu mesaj planlanan zamanda gönderilemedi.",
+  "This message is no longer scheduled to be sent.": "Bu mesaj artık gönderilmek üzere planlanmamıştır.",
   "This message was hidden because you have muted the sender.": "Gönderenizi sessize aldığınız için bu ileti gizlendi.",
-  "This organization is configured so that administrators and moderators can add custom emoji.": "",
-  "This organization is configured so that admins and moderators can invite users to this organization.": "",
-  "This organization is configured so that admins can invite users to this organization.": "",
-  "This organization is configured so that admins, moderators and full members can invite users to this organization.": "",
-  "This organization is configured so that admins, moderators and members can invite users to this organization.": "",
-  "This organization is configured so that any member of this organization can add custom emoji.": "",
-  "This organization is configured so that anyone can add bots.": "",
-  "This organization is configured so that full members can add custom emoji.": "",
-  "This organization is configured so that nobody can invite users to this organization.": "",
-  "This organization is configured so that only administrators can add bots.": "",
-  "This organization is configured so that only administrators can add custom emoji.": "",
-  "This organization is configured so that only administrators can add generic bots.": "",
+  "This organization is configured so that administrators and moderators can add custom emoji.": "Bu organizasyon, yöneticilerin ve moderatörlerin özel emoji ekleyebileceği şekilde yapılandırılmıştır.",
+  "This organization is configured so that admins and moderators can invite users to this organization.": "Bu organizasyon, yöneticilerin ve moderatörlerin kullanıcıları bu organizasyona davet edebilecekleri şekilde yapılandırılmıştır.",
+  "This organization is configured so that admins can invite users to this organization.": "Bu organizasyon, yöneticilerin kullanıcıları bu organizasyona davet edebilmesi için yapılandırılmıştır.",
+  "This organization is configured so that admins, moderators and full members can invite users to this organization.": "Bu organizasyon, yöneticilerin, moderatörlerin ve tam üyelerin kullanıcıları bu organizasyona davet edebilecekleri şekilde yapılandırılmıştır.",
+  "This organization is configured so that admins, moderators and members can invite users to this organization.": "Bu organizasyon, yöneticilerin, moderatörlerin ve üyelerin kullanıcıları bu organizasyona davet edebilecekleri şekilde yapılandırılmıştır.",
+  "This organization is configured so that any member of this organization can add custom emoji.": "Bu organizasyon, bu organizasyonun herhangi bir üyesinin özel emoji ekleyebileceği şekilde yapılandırılmıştır.",
+  "This organization is configured so that anyone can add bots.": "Bu organizasyon herkesin bot ekleyebileceği şekilde yapılandırılmıştır.",
+  "This organization is configured so that full members can add custom emoji.": "Bu organizasyon, tam üyelerin özel emoji ekleyebileceği şekilde yapılandırılmıştır.",
+  "This organization is configured so that nobody can invite users to this organization.": "Bu organizasyon, hiç kimse bu organizasyona kullanıcı davet edemeyecek şekilde yapılandırılmıştır.",
+  "This organization is configured so that only administrators can add bots.": "Bu organizasyon, yalnızca yöneticilerin bot ekleyebileceği şekilde yapılandırılmıştır.",
+  "This organization is configured so that only administrators can add custom emoji.": "Bu organizasyon, yalnızca yöneticilerin özel emoji ekleyebileceği şekilde yapılandırılmıştır.",
+  "This organization is configured so that only administrators can add generic bots.": "Bu organizasyon, yalnızca yöneticilerin genel botlar ekleyebileceği şekilde yapılandırılmıştır.",
   "This organization is configured to restrict editing of message content to {minutes_to_edit} minutes after it is sent.": "Bu organizasyon, ileti içeriğinin düzenlenmesini, gönderildikten sonra {minutes_to_edit} dakika ile sınırlayacak şekilde yapılandırılmıştır.",
   "This stream does not exist or is private.": "Kanal mevcut değil veya özel.",
   "This stream does not yet have a description.": "Bu kanalın henüz bir açıklaması yok.",
   "This stream has been deactivated": "Bu kanal devre dışı bırakıldı",
-  "This stream has no subscribers.": "",
-  "This stream has {sub_count, plural, =0 {no subscribers} one {# subscriber} other {# subscribers}}.": "",
+  "This stream has no subscribers.": "Bu kanalın hiç abonesi yok.",
+  "This stream has {sub_count, plural, =0 {no subscribers} one {# subscriber} other {# subscribers}}.": "This stream has {sub_count, plural, =0 {no subscribers} one {# subscriber} other {# subscribers}}.",
   "This user does not exist!": "Bu kullanıcı mevcut değil!",
-  "This user has been deactivated.": "",
-  "This view is still loading messages.": "",
-  "This will clear the  profile field for 1 user.": "",
-  "This will clear the  profile field for  users.": "",
-  "This will delete the  profile field for 1 user.": "",
-  "This will delete the  profile field for  users.": "",
+  "This user has been deactivated.": "Bu kullanıcı devre dışı bırakıldı.",
+  "This view is still loading messages.": "Bu görünüm hala mesajları yüklüyor.",
+  "This will clear the  profile field for 1 user.": "Bu, 1 kullanıcı için  profil alanını temizleyecektir.",
+  "This will clear the  profile field for  users.": "Bu,  kullanıcıları için  profil alanını temizleyecektir.",
+  "This will delete the  profile field for 1 user.": "Bu, 1 kullanıcı için  profil alanını silecektir.",
+  "This will delete the  profile field for  users.": "Bu,  kullanıcıları için  profil alanını silecektir.",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Perşembe",
   "Time": "Saat",
   "Time format": "Saat formatı",
   "Time limit for deleting messages": "İletileri silmek için zaman sınırı",
-  "Time limit for editing messages": "",
-  "Time limit for editing topics": "",
-  "Time limit for moving messages between streams": "",
+  "Time limit for editing messages": "Mesajları düzenlemek için zaman sınırı",
+  "Time limit for editing topics": "Konuları düzenlemek için zaman sınırı",
+  "Time limit for moving messages between streams": "Kanallar arasında mesaj taşımak için zaman sınırı",
   "Time zone": "Zaman dilimi",
   "Time's up!": "Süre doldu!",
   "Tip: You can also send \"/poll Some question\"": "İpucu: Aynı zamanda \"/poll soru öbeği\" şeklinde de gönderebilirsiniz",
   "To invite users, please increase the number of licenses or deactivate inactive users.": "Kullanıcıları davet etmek için lütfen lisans sayısını artırın  veya etkin olmayan kullanıcıları devre dışı bırakın .",
-  "To preserve your reading state, this view does not mark messages as read.": "",
+  "To preserve your reading state, this view does not mark messages as read.": "Okuma durumunuzu korumak için bu görünüm iletileri okundu olarak işaretlemez.",
   "Today": "Bugün",
-  "Today at {time}": "",
-  "Toggle first emoji reaction on selected message": "",
+  "Today at {time}": "Bugün saat {time}",
+  "Toggle first emoji reaction on selected message": "Seçili mesajdaki ilk emoji tepkisini aç / kapat",
+  "Toggle preview mode": "",
   "Toggle subscription": "Aboneliği aç/kapa",
   "Toggle the gear menu": "Dişli menüsünü açıp kapa",
   "Toggle topic mute": "Konuyu sessize almayı açıp kapa",
-  "Tomorrow at {time}": "",
+  "Tomorrow at {time}": "Yarın saat {time}",
   "Topic": "Konu",
   "Topic muted": "Konu susturuldu",
-  "Topic notifications": "",
-  "Topic settings": "",
+  "Topic notifications": "Konu bildirimleri",
+  "Topic settings": "Konu ayarları",
   "Topics": "Konular",
-  "Topics I participate in": "",
-  "Topics I send a message to": "",
-  "Topics I start": "",
-  "Topics are required in this organization.": "",
+  "Topics I participate in": "Katıldığım Konular",
+  "Topics I send a message to": "Mesaj gönderdiğim konular",
+  "Topics I start": "Başladığım konular",
+  "Topics are required in this organization.": "Bu organizasyonda konular gereklidir.",
   "Topics marked as resolved": "Çözüldü olarak işaretlenen konular",
   "Tuesday": "Salı",
-  "Turn off invisible mode": "",
+  "Turn off invisible mode": "Görünmez modu kapatın",
   "Two factor authentication": "İkili doğrulama",
   "Type": "Tür",
-  "URL": "",
-  "URL for your integration": "",
+  "URL": "URL",
+  "URL for your integration": "Entegrasyonunuz için URL",
   "URL pattern": "URL kalıbı",
-  "URL template": "",
+  "URL template": "URL şablonu",
   "USERS": "KULLANICILAR",
   "Uncheck all": "Tüm seçilenleri iptal et",
   "Undo": "Geri Al",
-  "Undo mute": "",
+  "Undo mute": "Sessizliği geri al",
   "Unknown": "Bilinmeyen",
   "Unknown stream": "Bilinmeyen kanal",
-  "Unknown stream #{search_text}": "",
-  "Unknown user": "",
+  "Unknown stream #{search_text}": "#{search_text} bilinmeyen kanal",
+  "Unknown user": "Bilinmeyen kullanıcı",
   "Unmute": "Tekrar sesliye al",
   "Unmute stream": "Kanalı sesliye al",
   "Unmute this user": "Bu kullanıcının sesini aç",
   "Unmute topic": "Konunun sesini açın",
-  "Unmuted": "",
-  "Unmuted {stream_topic}.": "",
-  "Unmuted streams and topics": "",
+  "Unmuted": "Sesliye alındı",
+  "Unmuted {stream_topic}.": "Sesliye alındı: {stream_topic}.",
+  "Unmuted streams and topics": "Susturulmamış kanallar ve konular",
   "Unpin stream from top": "Kanalı tepeden çıkar",
   "Unread": "Okunmamış",
-  "Unread count badge (appears in desktop sidebar and browser tab)": "",
-  "Unread messages": "",
+  "Unread count badge (appears in desktop sidebar and browser tab)": "Okunmamış sayı rozeti (masaüstü kenar çubuğunda ve tarayıcı sekmesinde görünür)",
+  "Unread messages": "Okunmamış mesajlar",
   "Unresolve topic": "Konu çözümünü geri al",
   "Unstar": "Yıldızı kaldır",
   "Unstar all messages": "Tüm iletilerin işaretini kaldır",
   "Unstar all messages in topic": "Konudaki tüm iletilerin işaretini kaldır",
   "Unstar messages in topic": "Konudaki iletilerin işaretlerini kaldır",
-  "Unstar this message": "",
+  "Unstar this message": "Bu mesajı kaldırın",
   "Unsubscribe": "Abonelikten çık",
-  "Unsubscribe from ?": "",
-  "Unsubscribe from ": "",
-  "Unsubscribe {full_name} from ?": "",
+  "Unsubscribe from ?": " aboneliğinden mi çıktınız?",
+  "Unsubscribe from ": " aboneliğinden çıkın",
+  "Unsubscribe {full_name} from ?": "{full_name} kanallardan, , aboneliğini kaldır  ?",
   "Unsubscribed successfully!": "Abonelikten çıkış başarılı!",
   "Up to {time_limit} after posting": "Yayınlandıktan sonra en fazla {time_limit}",
   "Update successful: Subdomains allowed for {domain}": "Güncelleme başarılı: {domain} için alt alanlara izin verildi",
   "Update successful: Subdomains no longer allowed for {domain}": "Güncelleme başarılı: {domain} için artık alt alanlara izin verilmiyor",
-  "Upgrade to the latest release": "",
-  "Upgrade to {standard_plan_name}": "",
+  "Upgrade to the latest release": "En son sürüme yükseltin",
+  "Upgrade to {standard_plan_name}": "{standard_plan_name} planına yükseltildi",
   "Upload avatar": "Avatar yükle",
   "Upload files": "Dosyaları yükle",
   "Upload icon": "İkon yükle",
@@ -1309,71 +1329,71 @@
   "Uploading {filename}…": "{filename} yükleniyor…",
   "Usage statistics": "Kullanım istatistikleri",
   "Use full width on wide screens": "Geniş ekranlar için tam genişlik kullan",
-  "Use html encoding (not recommended)": "",
+  "Use html encoding (not recommended)": "Html kodlaması kullanın (önerilmez)",
   "Use organization level settings {org_level_message_retention_setting}": "Organizasyon düzeyindeki ayarları kullan {org_level_message_retention_setting}",
   "Use stream settings to unsubscribe from private streams.": "Özel kanal aboneliğinden çıkmak için kanal ayarlarını kullanın.",
-  "Use stream settings to unsubscribe the last user from a private stream.": "",
+  "Use stream settings to unsubscribe the last user from a private stream.": "Özel bir akıştaki son kullanıcının aboneliğini iptal etmek için akış ayarlarını kullanın.",
   "User": "Kullanıcı",
   "User ID": "Kullanıcı ID",
-  "User group creation": "",
-  "User group description": "",
-  "User group name": "",
-  "User group settings": "",
+  "User group creation": "Kullanıcı grubu oluşturma",
+  "User group description": "Kullanıcı grubu açıklaması",
+  "User group name": "Kullanıcı grubu adı",
+  "User group settings": "Kullanıcı grubu ayarları",
   "User groups": "Kullanıcı grupları",
   "User identity": "Kullanıcı kimliği!",
   "User is already not subscribed.": "Kullanıcı zaten üye değil.",
   "User is deactivated": "Kullanıcı devre dışı bırakıldı",
   "User list": "Kullanıcı listesi",
-  "User list style": "",
-  "User list style changed successfully!": "",
+  "User list style": "Kullanıcı listesi stili",
+  "User list style changed successfully!": "Kullanıcı listesi stili başarıyla değiştirildi!",
   "User role": "Kullanıcı rolü",
   "Users": "Kullanıcılar",
-  "Users can always disable their personal read receipts.": "",
-  "Users join as": "",
-  "VIEWS": "",
+  "Users can always disable their personal read receipts.": "Kullanıcılar kişisel okundu bilgilerini her zaman devre dışı bırakabilir.",
+  "Users join as": "Kullanıcılar şu şekilde katılır",
+  "VIEWS": "GÖRÜNÜMLER",
   "Vacationing": "Tatilde",
   "Version {zulip_version}": "Sürüm {zulip_version}",
-  "View all streams": "",
-  "View all user groups": "",
-  "View direct messages": "",
+  "View all streams": "Bütün kanalları görüntüle",
+  "View all user groups": "Tüm kullanıcı gruplarını görüntüle",
+  "View direct messages": "Direk mesajları göster",
   "View drafts": "Taslakları göster",
-  "View edit and move history": "",
+  "View edit and move history": "Düzenleme ve taşıma geçmişini görüntüleme",
   "View edit history": "Güncelleme geçmişini görüntüle",
   "View file": "Dosyayı göster",
   "View in playground": "playgroundu görüntüle",
   "View in {name}": "{name} içinde görüntüle",
   "View in {playground_name}": "{playground_name} içinde görüntüle",
-  "View message source": "",
+  "View message source": "Mesaj kaynağını görüntüle",
   "View messages sent": "Gönderilen iletileri görüntüle",
-  "View messages with yourself": "",
-  "View profile": "",
+  "View messages with yourself": "Mesajları kendinizle görüntüleyin",
+  "View profile": "Profili görüntüle",
   "View read receipts": "Okundu raporlarını görüntüle",
-  "View recent conversations": "",
-  "View scheduled messages": "",
+  "View recent conversations": "Son konuşmaları görüntüle",
+  "View scheduled messages": "Zamanlanmış mesajları görüntüleme",
   "View stream": "Kanal görüntüle",
   "View stream messages": "Kanal iletilerini görüntüle",
-  "View streams": "",
-  "View user card": "",
+  "View streams": "Kanalları görüntüle",
+  "View user card": "Kullanıcı kartını görüntüle",
   "View your profile": "Kendi profilini göster",
   "Visual": "Görsel",
   "Visual desktop notifications": "Görsel masaüstü bildirimleri",
   "Waiting period (days)": "Bekleme periyodları (gün)",
   "Waiting period before new members turn into full members": "Yeni üyelerin tam üyeliğe çevrimi için gerekli bekleme periyodu",
-  "Warning: #{stream_name} is a private stream.": "",
+  "Warning: #{stream_name} is a private stream.": "Uyarı: #{stream_name} kanalı özel bir kanaldır.",
   "We are about to have a poll.  Please wait for the question.": "Oylama/anket yapılmak üzere. Sorular için lütfen bekleyiniz.",
   "We strongly recommend enabling desktop notifications. They help Zulip keep your team connected.": "Masaüstü bildirimlerini etkinleştirmenizi şiddetle öneririz. Zulip'in takımınızı bağlı tutmasına yardımcı olur.",
   "We've replaced the \"{originalHotkey}\" hotkey with \"{replacementHotkey}\" to make this common shortcut easier to trigger.": "Bu genel kısayolun tetiklenmesini kolaylaştırmak için \"{originalHotkey}\" kısayol tuşunu \"{replacementHotkey}\" ile değiştirdik.",
   "Web-public": "Web-public",
   "Wednesday": "Çarşamba",
   "Week of {date}": "{date} Haftası",
-  "Welcome back!": "",
-  "What pronouns should people use to refer to you?": "",
-  "When you deactivate , they will be immediately logged out.": "",
-  "Where to send notifications": "",
+  "Welcome back!": "Tekrar hoş geldiniz!",
+  "What pronouns should people use to refer to you?": "İnsanlar size hitap ederken hangi zamirleri kullanmalı?",
+  "When you deactivate , they will be immediately logged out.": "'ı devre dışı bıraktığınızda, hemen oturumları kapatılacaktır.",
+  "Where to send notifications": "Bildirimlerin nereye gönderileceği",
   "Whether wildcard mentions like @all are treated as mentions for the purpose of notifications.": "@all gibi anımsamaların bildirimler için olan geçerliliği.",
-  "Which parts of the email should be included in the Zulip message sent to this stream?": "",
+  "Which parts of the email should be included in the Zulip message sent to this stream?": "Bu akışa gönderilen Zulip mesajına e-postanın hangi bölümleri dahil edilmelidir?",
   "Who can access the stream?": "Kanala kimler erişebilir?",
-  "Who can access user's email address": "",
+  "Who can access user's email address": "Kullanıcının e-posta adresine kimler erişebilir?",
   "Who can access your email address": "E-posta hesabınıza kimler erişebilir",
   "Who can add bots": "Kimler bot ekleyebilir",
   "Who can add custom emoji": "Kimler özel emoji ekleyebilir",
@@ -1381,27 +1401,27 @@
   "Who can create and manage user groups": "Kullanıcı gruplarını kim oluşturabilir ve düzenleyebilir",
   "Who can create private streams": "Kimler özel kanallar oluşturabilir",
   "Who can create public streams": "Kimler herkese açık kanal oluşturabilir",
-  "Who can create reusable invitation links": "",
-  "Who can create web-public streams": "",
+  "Who can create reusable invitation links": "Yeniden kullanılabilir davet bağlantılarını kimler oluşturabilir?",
+  "Who can create web-public streams": "Kimler web üzerinden halka açık akışlar oluşturabilir",
   "Who can delete their own messages": "Kimler kendi mesajlarını silebilir",
-  "Who can mention this group?": "",
-  "Who can move messages to another stream": "",
-  "Who can move messages to another topic": "",
-  "Who can notify a large number of users with a wildcard mention": "",
+  "Who can mention this group?": "Bu gruptan kim bahsedebilir?",
+  "Who can move messages to another stream": "Mesajları başka bir akışa kim taşıyabilir",
+  "Who can move messages to another topic": "Mesajları başka bir konuya kim taşıyabilir",
+  "Who can notify a large number of users with a wildcard mention": "Çok sayıda kullanıcıyı joker karakterle kim bilgilendirebilir?",
   "Who can post to the stream?": "Kanala kimler yazabilir?",
-  "Who can send email invitations to new users": "",
-  "Who can unsubscribe others from this stream?": "",
-  "Who can use direct messages": "",
-  "Who can view all other users in the organization": "",
-  "Why not start a conversation with yourself?": "",
-  "Why not start the conversation?": "",
+  "Who can send email invitations to new users": "Yeni kullanıcılara kimler e-posta daveti gönderebilir?",
+  "Who can unsubscribe others from this stream?": "Başkalarının bu kanaldaki aboneliğini kim iptal edebilir?",
+  "Who can use direct messages": "Doğrudan mesajları kimler kullanabilir?",
+  "Who can view all other users in the organization": "Kimler bu organizasyondaki diğer tüm kullanıcıları görebilir",
+  "Why not start a conversation with yourself?": "Neden kendinizle bir sohbet başlatmıyorsunuz?",
+  "Why not start the conversation?": "Neden konuşmayı başlatmıyorsunuz?",
   "Word": "Kelime",
   "Working remotely": "Uzaktan çalışıyor",
   "Working…": "Çalışıyor...",
   "Write": "Yaz",
   "Yes, please!": "Evet, lütfen!",
-  "Yes, save": "",
-  "Yes, schedule": "",
+  "Yes, save": "Evet, kaydet",
+  "Yes, schedule": "Evet, program",
   "Yes, send": "Evet, gönder",
   "Yesterday": "Dün",
   "You": "Sen",
@@ -1409,143 +1429,146 @@
   "You (click to remove) reacted with {emoji_name}": "{emoji_name} ile tepki verdiniz (kaldırmak için tıklayın)",
   "You (click to remove), {comma_separated_usernames} and {last_username} reacted with {emoji_name}": "Siz (kaldırmak için tıklayın), {comma_separated_usernames} ve {last_username}, {emoji_name} ile tepki verdi",
   "You and": "Siz ve",
-  "You and ": "",
+  "You and ": "Siz ve ",
   "You and {recipients}": "Siz ve {recipients}",
-  "You are about to disable all notifications for direct messages, @‑mentions and alerts, which may cause you to miss messages that require your timely attention. If you would like to temporarily disable all desktop notifications, consider turning on \"Do not disturb\" instead.": "",
-  "You are not a member of any user groups.": "",
-  "You are not allowed to send direct messages in this organization.": "",
+  "You are about to disable all notifications for direct messages, @‑mentions and alerts, which may cause you to miss messages that require your timely attention. If you would like to temporarily disable all desktop notifications, consider turning on \"Do not disturb\" instead.": "Doğrudan mesajlar, @‑mention'lar ve uyarılar için tüm bildirimleri devre dışı bırakmak üzeresiniz, bu da zamanında dikkatinizi gerektiren mesajları kaçırmanıza neden olabilir. Tüm masaüstü bildirimlerini geçici olarak devre dışı bırakmak isterseniz, bunun yerine \"Rahatsız etmeyin\" özelliğini açmayı düşünün.",
+  "You are not a member of any user groups.": "Herhangi bir kullanıcı grubuna üye değilsiniz.",
+  "You are not allowed to send direct messages in this organization.": "Bu organizasyonda doğrudan mesaj göndermenize izin verilmez.",
   "You are not currently subscribed to this stream.": "Şu anda bu kanala abone değilsiniz.",
-  "You are not subscribed to any streams.": "",
-  "You are not subscribed to stream ": "",
-  "You are sending a message to a resolved topic. You can send as-is or unresolve the topic first.": "",
+  "You are not subscribed to any streams.": "Herhangi bir kanala abone değilsiniz.",
+  "You are not subscribed to stream ": " kanalına abone değilsiniz",
+  "You are sending a message to a resolved topic. You can send as-is or unresolve the topic first.": "Çözümlenmiş bir konuya mesaj gönderiyorsunuz. Olduğu gibi gönderebilir veya önce konuyu çözümleyebilirsiniz.",
   "You are using an old version of the Zulip desktop app with known security bugs.": "Güvenlik hataları bulunan eski bir Zulip masaüstü uygulamasını kullanıyorsunuz.",
-  "You are viewing all the bots in this organization.": "",
+  "You are viewing all the bots in this organization.": "Bu organizasyondaki tüm botları görüyorsunuz.",
   "You aren't subscribed to this stream and nobody has talked about that yet!": "Bu kanala abone değilsiniz ve bu konuda konuşan olmadı.",
-  "You can add a new bot or manage your own bots.": "",
-  "You can manage your own bots.": "",
+  "You can add a new bot or manage your own bots.": "yeni bir bot ekleyebilir veya kendi botlarınızı yönetebilirsiniz.",
+  "You can manage your own bots.": "Kendi botlarınızı yönetebilirsiniz.",
   "You can also make tables with this Markdown-ish table syntax.": "Bu  Markdown benzeri tablo sözdizimi ile  tablo  da oluşturabilirsiniz.",
-  "You can combine search filters as needed.": "",
-  "You can convert this demo organization to a permanent Zulip organization. All users and message history will be preserved.": "",
-  "You can fully access this community and participate in conversations by creating a Zulip account in this organization.": "",
-  "You can no longer save changes to this message.": "",
-  "You can only view or manage invitations that you sent.": "",
+  "You can combine search filters as needed.": "Arama filtrelerini gerektiği gibi birleştirebilirsiniz.",
+  "You can convert this demo organization to a permanent Zulip organization. All users and message history will be preserved.": "Bu demo organizasyonunu kalıcı bir Zulip organizasyonuna dönüştürebilirsiniz. Tüm kullanıcılar ve mesaj geçmişi korunacaktır.",
+  "You can fully access this community and participate in conversations by creating a Zulip account in this organization.": "Bu organizasyonda bir Zulip hesabı oluşturarak bu topluluğa tam olarak erişebilir ve konuşmalara katılabilirsiniz.",
+  "You can no longer save changes to this message.": "Bu mesajdaki değişiklikleri artık kaydedemezsiniz.",
+  "You can only view or manage invitations that you sent.": "Yalnızca gönderdiğiniz davetleri görüntüleyebilir veya yönetebilirsiniz.",
   "You can reactivate deactivated users from organization settings.": "Devre dışı bırakılan kullanıcıları  organizasyon ayarlarından  yeniden etkinleştirebilirsiniz:.",
-  "You can use email to send messages to Zulip streams.": "",
+  "You can use email to send messages to Zulip streams.": "Zulip akışlarına mesaj göndermek için e-posta kullanabilirsiniz.",
   "You cannot create a stream with no subscribers!": "Abonesi olmayan bir kanal oluşturamazsınız!",
-  "You cannot create a user group with no members!": "",
+  "You cannot create a user group with no members!": "Üyesi olmayan bir kullanıcı grubu oluşturamazsınız!",
   "You cannot send messages to deactivated users.": "Devre dışı bırakılmış kullanıcılara ileti gönderemezsiniz.",
-  "You do not have permission to add custom emoji.": "",
-  "You do not have permission to add other users to streams in this organization.": "",
-  "You do not have permission to join this group.": "",
-  "You do not have permission to leave this group.": "",
-  "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
-  "You do not have permission to post in this stream.": "",
-  "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
-  "You do not have permission to resolve topics with messages older than {N, plural, one {# hour} other {# hours}} in this organization.": "",
-  "You do not have permission to resolve topics with messages older than {N, plural, one {# minute} other {# minutes}} in this organization.": "",
-  "You do not have permission to unresolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
-  "You do not have permission to unresolve topics with messages older than {N, plural, one {# hour} other {# hours}} in this organization.": "",
-  "You do not have permission to unresolve topics with messages older than {N, plural, one {# minute} other {# minutes}} in this organization.": "",
-  "You do not have permission to use @topic mentions in this topic.": "",
-  "You do not have permission to use @{stream_wildcard_mention} mentions in this stream.": "",
-  "You do not have permissions to generate invite links in this organization.": "",
-  "You do not have permissions to send email invitations in this organization.": "",
-  "You don't have any direct message conversations yet.": "",
-  "You follow this topic": "",
+  "You do not have permission to add custom emoji.": "Özel emoji ekleme izniniz yok.",
+  "You do not have permission to add other users to streams in this organization.": "Bu organizasyonda diğer kullanıcıları kanallara ekleme iznine sahip değilsiniz.",
+  "You do not have permission to join this group.": "Bu gruba katılmak için izniniz yok.",
+  "You do not have permission to leave this group.": "Bu gruptan ayrılmak için izniniz yok.",
+  "You do not have permission to move messages to another stream in this organization.": "",
+  "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "Bu konudaki bazı mesajları taşımak için izniniz yok. Tüm mesajları taşımak için bir moderatörle iletişime geçin.",
+  "You do not have permission to post in this stream.": "Bu akışta gönderi paylaşma izniniz yok.",
+  "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "{N, plural, one {# day} other {# days}} günden eski mesajı olan konuları kapatmak için bu organizasyonda yetkiniz yok.",
+  "You do not have permission to resolve topics with messages older than {N, plural, one {# hour} other {# hours}} in this organization.": "{N, plural, one {# hour} other {# hours}} saatten eski mesajı olan konuları kapatmak için bu organizasyonda yetkiniz yok.",
+  "You do not have permission to resolve topics with messages older than {N, plural, one {# minute} other {# minutes}} in this organization.": "{N, plural, one {# minute} other {# minutes}} dakikadan eski mesajı olan konuları kapatmak için bu organizasyonda yetkiniz yok.",
+  "You do not have permission to unresolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "{N, plural, one {# day} other {# days}} günden eski mesajı olan konuları kapatmak için bu organizasyonda yetkiniz yok.",
+  "You do not have permission to unresolve topics with messages older than {N, plural, one {# hour} other {# hours}} in this organization.": "{N, plural, one {# hour} other {# hours}} saatten eski mesajı olan konuları kapatmak için bu organizasyonda yetkiniz yok.",
+  "You do not have permission to unresolve topics with messages older than {N, plural, one {# minute} other {# minutes}} in this organization.": "{N, plural, one {# minute} other {# minutes}} dakikadan eski mesajı olan konuları kapatmak için bu organizasyonda yetkiniz yok.",
+  "You do not have permission to use @topic mentions in this topic.": "Bu konuda @topic mention'larını kullanma izniniz yoktur.",
+  "You do not have permission to use @{stream_wildcard_mention} mentions in this stream.": "@{stream_wildcard_mention}kullanmak için izniniz yok. ",
+  "You do not have permissions to generate invite links in this organization.": "Bu organizasyonda davet bağlantıları oluşturmak için izniniz yok.",
+  "You do not have permissions to send email invitations in this organization.": "Bu organizasyonda e-posta davetleri göndermek için izniniz yok.",
+  "You don't have any direct message conversations yet.": "Henüz herhangi bir doğrudan mesaj görüşmeniz yok.",
+  "You follow this topic": "Bu konuyu takip ediyorsunuz",
   "You get": "Sonuç",
-  "You have at least {unread_msgs_count} unread messages.": "",
-  "You have {scheduled_message_count, plural, =1 {1 scheduled message} other {# scheduled messages}} for this conversation.": "",
-  "You have {unread_msgs_count} unread messages.": "",
-  "You have mentions": "",
+  "You have at least {unread_msgs_count} unread messages.": "En az {unread_msgs_count} okunmamış mesajınız var.",
+  "You have {scheduled_message_count, plural, =1 {1 scheduled message} other {# scheduled messages}} for this conversation.": "Bu sohbet için {scheduled_message_count, plural, =1 {1 scheduled message} other {# scheduled messages}} adet yeni mesajınız var.",
+  "You have {unread_msgs_count} unread messages.": "{unread_msgs_count} adet okunmamış mesajınız var.",
+  "You have mentions": "Bahsettikleriniz var",
   "You have muted .": "Sesini kapattınnız .",
-  "You have muted this topic": "",
+  "You have muted this topic": "Bu konuyu sessize aldınız",
   "You have no active bots.": "Faal botunuz bulunmuyor.",
-  "You have no direct messages including {person} yet.": "",
-  "You have no direct messages with these users yet.": "",
-  "You have no direct messages with {person} yet.": "",
-  "You have no direct messages yet!": "",
+  "You have no direct messages including {person} yet.": "{person} kişisini içeren direk mesajınız bulunmamaktadır.",
+  "You have no direct messages with these users yet.": "Bu kullanıcılarla henüz doğrudan mesajınız yok.",
+  "You have no direct messages with {person} yet.": "{person} kişisi ile henüz bir direk mesajınız bulunmamaktadır.",
+  "You have no direct messages yet!": "Henüz doğrudan mesajınız yok!",
   "You have no inactive bots.": "Devre dışı botunuz bulunmuyor.",
-  "You have no more unread direct messages.": "",
-  "You have no more unread topics.": "",
-  "You have no starred messages.": "",
-  "You have no unread messages in followed topics.": "",
+  "You have no more unread direct messages.": "Artık okunmamış doğrudan mesajınız yok.",
+  "You have no more unread topics.": "Artık okunmamış konunuz yok.",
+  "You have no starred messages.": "Yıldızlı mesajınız yok.",
+  "You have no unread messages in followed topics.": "Takip edilen konularda okunmamış mesajınız yok.",
   "You have no unread messages!": "Okunmamış iletiniz yok.",
-  "You have not configured any topics yet.": "",
+  "You have not configured any topics yet.": "Henüz herhangi bir konu yapılandırmadınız.",
   "You have not muted any users yet.": "Henüz hiçbir kullanıcının sesini kapatmadınız.",
-  "You have not sent any direct messages to yourself yet!": "",
+  "You have not sent any direct messages to yourself yet!": "Henüz kendinize herhangi bir doğrudan mesaj göndermediniz!",
   "You have not uploaded any files.": "Herhangi bir dosya yüklemediniz.",
-  "You have unmuted this topic": "",
+  "You have unmuted this topic": "Bu konunun sesini açtınız",
   "You haven't been mentioned yet!": "Henüz sizden bahsedilmedi.",
-  "You haven't received any messages sent by {person} yet.": "",
-  "You may want to configure your organization's login page prior to inviting users.": "",
-  "You may want to upload a profile picture for your organization prior to inviting users.": "",
-  "You may want to configure default new user settings and custom profile fields prior to inviting users.": "",
-  "You might be interested in recent conversations.": "",
-  "You must configure your email to access this feature.": "",
+  "You haven't received any messages sent by {person} yet.": "{person} tarafından gönderilen bir mesajınız bulunmamaktadır.",
+  "You may want to configure your organization's login page prior to inviting users.": "Kullanıcıları davet etmeden önce kuruluşunuzun oturum açma sayfasını yapılandırmak isteyebilirsiniz.",
+  "You may want to upload a profile picture for your organization prior to inviting users.": "Kullanıcıları davet etmeden önce kuruluşunuz için bir profil resmi yüklemek isteyebilirsiniz.",
+  "You may want to configure default new user settings and custom profile fields prior to inviting users.": "Kullanıcıları davet etmeden önce varsayılan yeni kullanıcı ayarları ve özel profil alanlarını yapılandırmak isteyebilirsiniz.",
+  "You might be interested in recent conversations.": "yakın zamandaki konuşmalar ilginizi çekebilir.",
+  "You must configure your email to access this feature.": "Bu özelliğe erişmek için e-postanızı yapılandırmanız gerekir.",
   "You must be an organization administrator to create a stream without subscribing.": "Kanala üye olmadan kanal oluşturabilmek için organizasyon yöneticisi olmalısınız.",
-  "You must configure your email to access this feature.": "",
+  "You must configure your email to access this feature.": "Bu özelliğe erişmek için e-postanızı yapılandırmanız gerekir.",
   "You need to be running Zephyr mirroring in order to send messages!": "İleti gönderebilmek için Zephyr aynalama (mirroring) çalıştırıyor olmalısınız!",
   "You searched for:": "Şunu aradınız:",
-  "You subscribed to stream ": "",
+  "You subscribed to stream ": " akışına abone oldunuz",
   "You type": "Yazdınız",
-  "You unsubscribed from stream ": "",
-  "You will automatically follow topics that you have configured to both follow and unmute.": "",
-  "You will get default notifications for this topic": "",
-  "You will not receive notifications about new messages.": "",
-  "You're done!": "",
+  "You unsubscribed from stream ": " akışından aboneliğinizi iptal ettiniz",
+  "You will automatically follow topics that you have configured to both follow and unmute.": "Hem follow hem de unmute olarak yapılandırdığınız konuları otomatik olarak takip edeceksiniz.",
+  "You will get default notifications for this topic": "Bu konu için varsayılan bildirimleri alacaksınız",
+  "You will not receive notifications about new messages.": "Yeni mesajlar hakkında bildirim almayacaksınız.",
+  "You're done!": "İşin bitti!",
   "You're not subscribed to this stream. You will not be notified if other users reply to your message.": "Bu kanala abone değilsiniz. Diğer kullanıcılar iletinize cevap verirse bilgilendirilmeyeceksiniz.",
   "Your API key:": "API anahtarınız:",
-  "Your Zulip account on  has been deactivated, and you will no longer be able to log in.": "",
-  "Your groups": "",
-  "Your message has been scheduled for {deliver_at}.": "",
-  "Your message is taking longer than expected to be sent. Sending…": "",
-  "Your message was sent to a stream you have muted.": "",
-  "Your message was sent to a topic you have muted.": "",
-  "Your password": "",
-  "Your question": "",
+  "Your Zulip account on  has been deactivated, and you will no longer be able to log in.": " üzerindeki Zulip hesabınız devre dışı bırakıldı ve artık giriş yapamayacaksınız.",
+  "Your groups": "Gruplarınız",
+  "Your message has been scheduled for {deliver_at}.": "Mesajınızın iletimi {deliver_at} zamanına ayarlandı.",
+  "Your message is taking longer than expected to be sent. Sending…": "Mesajınızın gönderilmesi beklenenden uzun sürüyor. Gönderiliyor…",
+  "Your message was sent to a stream you have muted.": "Mesajınız sessize aldığınız bir akışa gönderildi.",
+  "Your message was sent to a topic you have muted.": "Mesajınız sessize aldığınız bir konuya gönderildi.",
+  "Your password": "Şifreniz",
+  "Your question": "Sizin sorunuz",
   "Your status": "Durumunuz",
   "Your time zone:": "Saat diliminiz:",
-  "Zoom to message in conversation context": "",
+  "Zoom to message in conversation context": "Konuşma bağlamında mesaja yakınlaştırma",
   "Zulip": "Zulip",
-  "Zulip Server dev environment": "",
-  "Zulip Server {display_version}": "",
-  "Zulip Server {display_version} (modified)": "",
-  "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip Server dev environment": "Zulip Server geliştirme ortamı",
+  "Zulip Server {display_version}": "Zulip Server {display_version}",
+  "Zulip Server {display_version} (modified)": "Zulip Server {display_version} (düzenlenmiş)",
+  "Zulip Server {display_version} (patched)": "Zulip Server {display_version} (yamalanmış)",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip kullanıcı e-posta adreslerini teyid etmek ve bildirim göndermek için e-posta göndermelidir.",
   "Zulip needs your permission to enable desktop notifications.": "Zulip'in  masaüstü bildirimlerini etkinleştirmek için izninize ihtiyacı var.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulip'in çevirileri, gönüllü çevirmenlerden oluşan muhteşem topluluğumuz tarafından sağlanmaktadır. Yardım etmek isterseniz, bkz. Zulip çeviri yönergeleri .",
   "[Configure]": "[Ayarla]",
-  "[Quoting…]": "",
-  "acme": "",
+  "[Quoting…]": "[Alıntılanıyor...]",
+  "acme": "acme",
   "and {remaining_senders, plural, one {1 other} other {# others}}.": "ve {remaining_senders, plural, {1 other} daha {# others}}.",
-  "back to streams": "",
+  "back to streams": "Kanallara geri dön",
   "beta": "beta",
   "clear": "temizle",
   "cookie": "çerez",
-  "deactivated": "",
-  "deprecated": "",
-  "direct messages with yourself": "",
-  "direct messages with {recipient}": "",
-  "does not apply to administrators": "",
-  "does not apply to moderators and administrators": "",
-  "group direct messages with {recipient}": "",
-  "guest": "",
-  "he/him": "",
-  "invisible mode off": "",
-  "is …": "",
+  "deactivated": "devre dışı bırakıldı",
+  "deprecated": "kullanım dışı",
+  "direct messages with yourself": "kendinizle doğrudan mesajlar",
+  "direct messages with {recipient}": "{recipient} ile olan direk mesajlar",
+  "does not apply to administrators": "yöneticiler için geçerli değildir",
+  "does not apply to moderators and administrators": "moderatörler ve yöneticiler için geçerli değildir",
+  "group direct messages with {recipient}": "{recipient} ile olan grup direk mesajları",
+  "guest": "misafir",
+  "he/him": "o",
+  "invisible mode off": "görünmez mod kapalı",
+  "is …": "bu …",
   "leafy green vegetable": "yapraklı yeşil sebze",
   "marketing": "pazarlama",
   "more conversations": "daha fazla görüşme",
   "more topics": "daha fazla konu",
-  "she/her": "",
-  "they/them": "",
+  "she/her": "o",
+  "they/them": "o",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} other {}}",
-  "{N, plural, one {Working… {N} message marked as read so far.} other {Working… {N} messages marked as read so far.}}": "{N, plural, one {} other {}}",
-  "{N, plural, one {Working… {N} message marked as unread so far.} other {Working… {N} messages marked as unread so far.}}": "{N, plural, one {} other {}}",
+  "{N, plural, one {Working… {N} message marked as read so far.} other {Working… {N} messages marked as read so far.}}": "{N, plural, one {Çalışılınıyor… şimdiye kadar {N} mesaj okundu olarak işaretlendi.} other {Çalışılınıyor… şimdiye kadar {N} mesaj okundu olarak işaretlendi.}}",
+  "{N, plural, one {Working… {N} message marked as unread so far.} other {Working… {N} messages marked as unread so far.}}": "{N, plural, one {Çalışılınıyor… şimdiye kadar {N} mesaj okunmadı olarak işaretlendi.} other {Çalışılınıyor… şimdiye kadar {N} mesaj okunmadı olarak işaretlendi.}}",
   "{comma_separated_usernames} and {last_username} reacted with {emoji_name}": "{comma_separated_usernames} ve {last_username}, {emoji_name} ile reaksiyona girdi",
   "{date} at {time}": "{date} tarihinde {time} 'de",
   "{days_old} days ago": "{days_old} gün önce",
@@ -1554,12 +1577,12 @@
   "{messages_not_allowed_to_move, plural, one {# message} other {# messages}} will remain in the current topic.": "{messages_not_allowed_to_move, plural, one {} other {}} will remain in the current topic.",
   "{minutes} min to edit": "Düzenlemek için {minutes} dakika",
   "{minutes} minutes ago": "{minutes} dakika önce",
-  "{modal_heading_text}": "",
-  "{name} (guest)": "",
+  "{modal_heading_text}": "{modal_heading_text}",
+  "{name} (guest)": "{name} (misafir)",
   "{num_of_people, plural, one {This message has been read by {num_of_people} person:} other {This message has been read by {num_of_people} people:}}": "{num_of_people, plural, one {Bu mesaj {num_of_people} kişi tarafından okunmuştur :} other {Bu mesaj {num_of_people} kişi tarafından okunmuştur:}}",
   "{seconds} sec to edit": "Düzenlemek için {seconds} saniye",
-  "{server_jitsi_server_url} (default)": "",
-  "{user_time} local time": "",
+  "{server_jitsi_server_url} (default)": "{server_jitsi_server_url} (varsayılan)",
+  "{user_time} local time": "{user_time} lokal zaman",
   "{username} [said]({link_to_message}):": "{username} [dedi]({link_to_message}):",
   "{username} reacted with {emoji_name}": "{username}, {emoji_name} ile reaksiyona girdi"
 }
\ No newline at end of file
diff --git a/locale/uk/LC_MESSAGES/django.po b/locale/uk/LC_MESSAGES/django.po
index e9dfb317ce..206d7fb59f 100644
--- a/locale/uk/LC_MESSAGES/django.po
+++ b/locale/uk/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Mykola Ronik , 2018-2021\n"
 "Language-Team: Ukrainian (http://app.transifex.com/zulip/zulip/language/uk/)\n"
@@ -21,57 +21,51 @@ msgstr ""
 "Language: uk\n"
 "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "Не дозволено для гостьових користувачів"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Неправильна організація"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "Відкриті канали"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "Приватні канали"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Час початку пізніше, ніж час закінчення. Початок: {start}, кінець: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Аналітичні дані відсутні. Будь ласка, зв'яжіться зі своїм адміністратором сервера."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "Недійсний параметр"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -80,7 +74,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -89,7 +83,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -98,7 +92,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -107,7 +101,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -116,11 +110,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -136,124 +130,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} закінчується за {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "Невідомий спосіб оплати. Зверніться до {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Щось пішло не так. Зверніться до {email}."
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Щось пішло не так. Перезавантажте сторінку."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Щось пішло не так. Будь ласка, зачекайте кілька секунд і повторіть спробу."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "Повинен бути адміністратором платежів або власником організації"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -261,54 +255,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "Недійсний параметр"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Помилка"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -317,8 +318,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Внутрішня помилка сервера"
 
@@ -423,7 +457,7 @@ msgstr "15 денна активність"
 msgid "Total users"
 msgstr "Всього користувачів"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Користувачі"
 
@@ -563,36 +597,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "Переконайтеся, що ви правильно скопіювали посилання у браузер. Якщо ви все ще стикаєтесь із цією сторінкою, мабуть, це наша провина. Нам шкода."
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "Платежі"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Скасувати"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "Підтвердити"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -614,6 +744,451 @@ msgstr "Категорії"
 msgid "All"
 msgstr "Всі"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -633,11 +1208,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -652,12 +1223,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Створити організацію"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -690,51 +1261,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Звернутися в службу підтримки"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Організація"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "Відправити"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -750,14 +1318,6 @@ msgstr "Аватар"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -805,7 +1365,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Зареєструватися"
 
@@ -838,8 +1398,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Увійти"
 
@@ -872,26 +1432,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Спробуємо зараз."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "Повідомлення"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1114,21 +1670,21 @@ msgstr "Гостьові користувачі"
 msgid "Normal users"
 msgstr "Звичайні користувачі"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Закрити"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "Оновити"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2351,7 +2907,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2371,7 +2927,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2381,12 +2946,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Електронна адреса"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Знайти облікові записи"
 
@@ -2418,7 +2983,7 @@ msgstr "Інтеграції"
 msgid "Desktop & mobile apps"
 msgstr "Настільні та мобільні додатки"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "Нова організація"
 
@@ -2786,12 +3351,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2800,11 +3361,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2973,6 +3529,22 @@ msgstr "Що вас цікавить?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Скинути пароль"
@@ -3130,123 +3702,107 @@ msgid ""
 "                        "
 msgstr "\n                        Ви також можете скористатися настільним додатком Zulip.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "реєстрації"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} щойно зареєструвався в Zulip. (всього: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} прийняв ваше запрошення приєднатися до Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Недійсне відображення порядку."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Ідентифікатор поля {id} не знайдено."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' є основним каналом і не може бути доданий до '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Група основних каналів '{group_name}' вже існує"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Канал '{stream_name}' вже присутній у групі основних каналів '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Канал '{stream_name}' не присутній у групі основних каналів '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Ваш обліковий запис занадто новий для надсилання запрошень для цієї організації. Попросіть адміністратора організації або досвідченого користувача."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Деякі електронні листи не підтверджені, тому ми не надсилали жодних запрошень."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Ми не змогли запросити когось."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3276,72 +3832,72 @@ msgstr "Не вдається змінити вміст повідомлення
 msgid "Widgets cannot be edited."
 msgstr "Віджети не можна редагувати."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Ваша організація вимкнула редагування повідомлень"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Ви не маєте права редагувати це повідомлення"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "Термін для редагування цього повідомлення минув"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Ваша організація вимкнула редагування повідомлень"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Ви не маєте права редагувати це повідомлення"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "Термін для редагування цього повідомлення минув"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "Ви не маєте дозволу на переміщення цього повідомлення"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3360,137 +3916,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Недійсне(і) повідомлення"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Неможливо відобразити повідомлення"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Очікується рівно один канал"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Недійсний тип даних для каналу"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Недійсний тип даних для одержувачів"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Списки одержувачів можуть містити електронні адреси або ID користувачів, але не обидва разом."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Ваш бот {bot_identity} намагався надіслати повідомлення в ID каналу {stream_id}, але каналу з цим ID немає."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Ваш бот {bot_identity} намагався надіслати повідомлення в канал {stream_name}, але такого каналу немає. Клацніть [тут]({new_stream_link}) щоб створити його."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Ваш бот {bot_identity} намагався надіслати повідомлення в канал {stream_name}. Канал існує, але не має підписників."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Віджети: API розробник надіслав JSON з помилковим вмістом"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Віджети: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "Користувацька емодзі з таким іменем вже існує."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3499,38 +4060,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} перейменував канал {old_stream_name} на {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "Без опису."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3544,7 +4105,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3554,187 +4115,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "Цей API недоступний для вхідних вебхук ботів."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Обліковий запис не пов'язаний з цим піддоменом"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "Ця точка прийому не приймає запити від ботів."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Має бути адміністратором сервера"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Недостатній дозвіл"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "Ця кінцева точка вимагає базової автентифікації HTTP."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Невірний заголовок авторизації для базової аутентифікації"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Відсутня заголовок авторизації для базової аутентифікації"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Вебхук боти мають доступ тільки до вебхуків"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Піддомен повинен мати 3 символа, або більше."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Піддомен не може починатись або закінчуватися символом '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Піддомен може містити лише малі літери, цифри та '-'."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Будь ласка, використовуйте свою справжню електронну адресу."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "Організація, яку ви намагаєтеся приєднати, використовуючи {email}, не існує."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Будь ласка, запросіть інвайт для {email} у адміністратора організації."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Ваша електронна адреса, {email}, не знаходиться в одному з доменів, яким дозволено зареєструватися для облікових записів у цій організації."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Електронні адреси що містять +, не дозволяються в цій організації."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "Новий пароль"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "Підтвердження нового пароля"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Токен"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Будь ласка, введіть не більше 10 електронних адрес."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "Ми не змогли знайти цю організацію Zulip."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Відсутня тема"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Неможливо відправити в декілька каналів"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Відсутній канал"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Повідомлення має містити одержувачів"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Недійсний тип повідомлення"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Неправильне вкладення"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "Під час видалення вкладення сталася помилка. Будь-ласка спробуйте пізніше."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Повідомлення повинно мати отримувачів!"
 
@@ -3791,88 +4352,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr "Чернетки не існує"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Відкрийте Zulip, щоб побачити прихований вміст"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Недійсна адреса."
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "За межами вашого домену."
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Електронні адреси, що містять +, не дозволені."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Зарезервовано для системних ботів."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} вже має обліковий запис"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Вже є обліковий запис."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Обліковий запис був деактивований."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Недійсний користувацький емодзі."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Недійсне ім'я користувацького емодзі."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "Ця нестандартна емодзі була деактивована."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Недійсний код емодзі."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Недійсне ім'я емодзі."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Недійсний тип емодзі."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Необхідно бути адміністратором організації або автором емодзі"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Відсутня назва емодзі"
 
@@ -3880,119 +4441,119 @@ msgstr "Відсутня назва емодзі"
 msgid "Could not allocate event queue"
 msgstr "Не вдалося виділити чергу подій"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Відсутній вхід: потрібні API автентифікації або сесія користувача"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Канал '{stream}' не існує"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Канал з ідентифікатором '{stream_id}' не існує"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "власник організації"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "користувач"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Неможливо деактивувати єдину {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Markdown містить недійсний вираз: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "Використання API перевищило встановлений ліміт"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Помилковий JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Має бути учасником організації"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Має бути адміністратором організації"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Має бути власником організації"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Обліковий запис деактивовано"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "Ця організація була деактивована"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Неправильний ключ API"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Неправильний ключ API"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Недійсний піддомен"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Доступ заборонено"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4000,47 +4561,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Реакція вже існує."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Реакції не існує."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Довільний зовнішній обліковий запис повинен визначити шаблон URL"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Недійсний тип зовнішнього облікового запису"
 
@@ -4138,106 +4699,106 @@ msgstr "Продуктивність"
 msgid "Version control"
 msgstr "Контроль версій"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Повідомлення не може бути порожнім"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Повідомлення не повинно містити нульових байтів"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Помилковий оператор пошуку: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Відсутній 'anchor' аргумент"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Помилковий гачок"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Привіт і ласкаво просимо до Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4246,119 +4807,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "Це приватний канал, на це вказує значок замка поруч із назвою каналу."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Приватні канали доступні лише його учасникам."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "Щоб керувати цим каналом, перейдіть до [налаштувань каналу]({stream_settings_url}) та клацніть на `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "Це повідомлення у каналі #**{default_notification_stream_name}** із темою `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Теми – це легкий інструмент для організації розмов."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "Ви можете дізнатися більше про теми на сторінці [канали та теми]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "Це повідомлення в каналі #**{default_notification_stream_name}** з темою `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Неправильний JSON у відповіді"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Неправильний формат відповіді"
 
@@ -4372,45 +4933,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Токен не існує"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} згадав вас:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} згадав усіх:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4422,23 +4983,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "Користувач не авторизований для цього запиту"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' більше не використовує Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4458,21 +5019,21 @@ msgstr "Відсутній аргумент '{var_name}'"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Погане значення для '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4509,7 +5070,7 @@ msgstr "Будь ласка оберіть один: 'stream' або 'stream_id'
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4523,7 +5084,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4532,7 +5093,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4564,28 +5125,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Дані підписника недоступні для цього каналу"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Не вдається отримати підписників для приватного каналу"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} не є логічним типом «bool»"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} не є датою"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} не є словником «dict»"
@@ -4596,18 +5157,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} не є дійсним «float» числом"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} не є цілим числом"
@@ -4617,24 +5178,24 @@ msgstr "{var_name} не є цілим числом"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} не є списком «list»"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Недійсний {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} занадто довге (обмеження: {max_length} символів)"
@@ -4644,8 +5205,8 @@ msgstr "{var_name} занадто довге (обмеження: {max_length} 
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} не є рядком"
@@ -4664,21 +5225,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Завантаження перевищить квоту завантаження вашої організації."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Неможливо декодувати малюнок; ви завантажили файл малюнку?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Розмір малюнку перевищує встановлений ліміт."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4735,161 +5296,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Ім'я занадто довге!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Ім'я занадто коротке!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Недійсні символи в імені!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Недійсний формат!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Ім'я вже використовується!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Хибне ім'я або ім'я користувача"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Недійсні дані конфігурації!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Невірний тип бота"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Недійсний тип інтерфейсу"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Немає такого бота"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Немає такого користувача"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "Користувача деактивовано"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} не може бути порожнім."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} має неправильну довжину {length}; має бути {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} не є коректним шістнадцятковим «hex» кодом кольору"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} повинен мати точно {length} елементів"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} ключ відсутній у {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} не є дозволеним типом allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} невірне)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} не є URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' не може бути порожнім."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' не є правильним вибором для '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} не є рядком або списком цілих чисел"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} не є рядком або цілим числом"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4923,215 +5484,211 @@ msgstr "Помилка CSRF: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "події каналу"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Недійсні символи в назві емодзі"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Недійсні символи в мові pygments"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr "Адміністратори, модератори, учасники та гості"
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr "Адміністратори, модератори та учасники"
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "Адміністратори та модератори"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Лише адміністратори"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Ніхто"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Власник організації"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Адміністратор організації"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Модератор"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Учасник"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Гість"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Відкритий"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Приватна, спільна історія"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Приватна, захищена історія"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "Усі учасники каналу можуть робити публікації"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Тільки адміністратори організації можуть залишати повідомлення"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Тільки адміністратори та модератори організації можуть залишати повідомлення"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Лише повноправні учасники організації можуть залишати повідомлення"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Юнікод емодзі"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Власні емодзі"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Додаткова Zulip емодзі"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "Список опцій"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Вибір людини"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Короткий текст"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Довгий текст"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr "Дата"
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Вибір дати"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Посилання"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "Зовнішній обліковий запис"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Юнікод емодзі"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Власні емодзі"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Додаткова Zulip емодзі"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Недійсні символи в назві емодзі"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Недійсні символи в мові pygments"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "події каналу"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Відкритий"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Приватна, спільна історія"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Приватна, захищена історія"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "Усі учасники каналу можуть робити публікації"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Тільки адміністратори організації можуть залишати повідомлення"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Тільки адміністратори та модератори організації можуть залишати повідомлення"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Лише повноправні учасники організації можуть залишати повідомлення"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr "Адміністратори, модератори, учасники та гості"
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr "Адміністратори, модератори та учасники"
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "Адміністратори та модератори"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Лише адміністратори"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Ніхто"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Власник організації"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Адміністратор організації"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Модератор"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Учасник"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Гість"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Невідома IP-адреса"
@@ -5144,20 +5701,20 @@ msgstr "невідома операційна система"
 msgid "An unknown browser"
 msgstr "Невідомий браузер"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Відсутній аргумент 'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Відсутній аргумент 'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "Подія, новіша за {event_id} уже була очищена!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Подія {event_id} була не в цій черзі"
@@ -5195,41 +5752,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr "Заголовок користувача-агента відсутній у запиті "
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Позначка не може бути порожньою."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Поле повинне мати хоча б один вибір."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Недійсний тип поля."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "Поле з цією позначкою вже існує."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Користувацьке поле за замовчуванням не можна оновити."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Кінцева точка не доступна у продакшині."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend не активовано."
 
@@ -5280,7 +5837,7 @@ msgstr "Ви повинні вказати щонайменше одну адр
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5329,19 +5886,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Відсутній відправник"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Віддзеркалення недозволене робити для ID отримувачів"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Помилкове віддзеркалене повідомлення"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Віддзеркалення Zephyr недозволене для цієї організації"
 
@@ -5357,42 +5914,46 @@ msgstr "Користувача вже заглушено"
 msgid "User is not muted"
 msgstr "Користувача не заглушено"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Місцезнаходження не підтримується для користувачів-ботів."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "Немає даних про присутність для {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Клієнт не передав ніякі нові значення."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Пустий чи недійсний токен довжини"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Недійсний токен APNS"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5407,55 +5968,55 @@ msgstr "Принаймні один з наступних аргументів 
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "Необхідно ввімкнути принаймні один метод автентифікації."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "Домен {domain} уже є частиною вашої організації."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "Не знайдено жодного запису для домену {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "Ви повинні завантажити рівно один файл."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5489,7 +6050,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "Ви повинні завантажити тільки одну іконку."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Лінкіфікатор не знайдений."
 
@@ -5517,71 +6078,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Приватні канали не можна зробити стандартними."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "Ви повинні передати \"new_description\" або \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Помилкове значення для \"op\". Вкажіть один з \"add\" або \"remove\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Канал вже має таке ім'я!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Нема чого робити. Вкажіть хоча б один \"add\" або \"delete\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} підписав вас на канал {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} підписав вас на наступні канали:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Не вдається отримати доступ до каналу ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "Ви можете запросити інших користувачів-міміків Zephyr тільки до приватних каналів."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} створив наступні канали: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} створив новий канал {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "нові канали"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5590,7 +6151,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Помилковий json для частини повідомлення"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "Ви не маєте права переглядати цей файл.
"
 
@@ -5614,112 +6175,112 @@ msgstr "Пустий 'кому' список"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Недійсний токен"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Недійсне ім'я файлу"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Ви повинні вказати файл для завантаження"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Ви можете завантажувати лише один файл за раз"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Немає нових даних"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "Користувач {user_id} вже є учасником цієї групи"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Зміни аватару відключені для цієї організації."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Зміна електронної адреси в цій організації вимкнена."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Неправильний default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Ваш пароль Zulip керується в LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Неправильний пароль!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "Новий пароль надто слабкий!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Ви повинні завантажити рівно один аватар."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Тема не заглушена"
 
@@ -5780,43 +6341,43 @@ msgstr "У цій організації не дозволяється вико
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Недійсний токен доступу Zoom"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Облікові дані Zoom не налаштовані"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Недійсний ідентифікатор сесії Zoom"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Недійсні облікові дані Zoom"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Не вдалося створити виклик Zoom."
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5849,11 +6410,11 @@ msgstr "Помилковий вміст"
 msgid "Unknown webhook request"
 msgstr "Невідомий вебхук запит"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Тема не може бути порожньою"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Вміст не може бути порожнім"
 
@@ -5880,7 +6441,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Неможливо обробити вміст Pivotal"
 
@@ -5897,83 +6458,105 @@ msgstr "Повідомлення від Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Недійсний піддомен для виклику push-сповіщень"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Повинен перевірити з правильним ключем API для Zulip сервера"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Недійсний тип токену"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Дані невпорядковані."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "Вам потрібно змінити Ваш пароль."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Відсутній параметр id_token"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Недійсний OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Неможливо використовувати mobile_flow_otp та desktop_flow_otp разом."
diff --git a/locale/uk/translations.json b/locale/uk/translations.json
index f1d8a9c8ca..832d6d9d51 100644
--- a/locale/uk/translations.json
+++ b/locale/uk/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(назавжди)",
   "(hidden)": "(приховано)",
-  "(no description)": "(без опису)",
   "(no topic)": "(немає теми)",
   "(or )": "",
   "(you)": "(Ви)",
   "({message_retention_days} days)": "({message_retention_days} днів)",
   "/dark (Switch to the dark theme)": "/dark (Перемкнути на темне оформлення)",
   "/light (Switch to light theme)": "/light  (Перемкнути на світле оформлення)",
-  "/me is excited (Display action text)": "/me схвильований (Показати дію)",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll Куди ми сьогодні підемо обідати? (Створити голосування)",
-  "/todo (Create a todo list)": "/todo (Створити список завдань)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 день",
   "1 hour": "1 година",
   "1 week": "1 тиждень",
@@ -28,7 +27,7 @@
   "6 hours": "6 годин",
   "Total messages: {total_messages}": "Всього повідомлень: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} буде видалено з повідомлень, до яких вона була поширена. Цю дію не можна скасувати.
",
-  "Stream will be announced in #{notifications_stream}.
": "Канал буде оголошено в #{notifications_stream}.
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "Ви шукаєте повідомлення, надіслані кількома користувачами, що неможливо.
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Додати",
   "Add GIF": "Додати GIF",
+  "Add a description": "",
   "Add a new alert word": "Додати нове сигнальне слово",
   "Add a new bot": "Додати нового бота",
   "Add a new code playground": "Додати новий майданчик для коду",
@@ -207,6 +207,7 @@
   "Bot": "Бот",
   "Bot email": "Електронна пошта бота",
   "Bot email (a-z, 0-9, and dashes only)": "Електронна адреса бота (лише символи a-z, 0-9 та дефіси) ",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "Тип бота",
   "Bots": "Боти",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "Майданчики для коду",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Налаштування методів автентифікації для вашої організації.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Налаштування основних каналів, на які нові користувачі будуть підписані під час приєднання до вашої організації.",
   "Confirm": "Підтвердити",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "Копіювати код",
   "Copy link": "Копіювати посилання",
   "Copy link to message": "Скопіювати посилання на повідомлення",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "Копіювати синтаксис згадування",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "Видалити чернетку",
@@ -413,7 +417,6 @@
   "Domain": "Домен",
   "Don’t allow disposable email addresses": "Не дозволяти одноразові адреси електронної пошти",
   "Download": "Завантажити",
-  "Download .zuliprc": "Завантажити .zuliprc",
   "Download botserverrc": "Завантажити botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "Завантажте конфігурацію всіх активних вихідних бот-серверів у форматі Zulip Botserver.",
   "Download file": "Завантажити файл",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Ефект",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Електронна пошта",
   "Email address": "Електронна адреса",
   "Email address changes are disabled in this organization.": "Зміна електронної адреси в цій організації вимкнена.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Зображення",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "Неактивні боти",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "Березень",
   "Mark all messages as read": "Відзначити всі повідомлення прочитаними",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Позначити як прочитане",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Згадано в",
   "Mentions": "Згадки",
   "Menus": "Меню",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Написати #{stream_name}",
   "Message #{stream_name} > {topic_name}": "Написати в #{stream_name} > {topic_name}",
   "Message actions": "Дії з повідомленнями",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "Повідомлення {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "Повідомлення {recipient_name} ({recipient_status})",
+  "Messages": "Повідомлення",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "Новий",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Нова електронна пошта",
   "New message": "Нове повідомлення",
   "New option": "Новий варіант",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Наступна непрочитана тема",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Немає ботів, які відповідають поточному фільтру.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "Без опису.",
   "No drafts selected": "",
   "No drafts.": "Немає чернеток.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Жодні запрошення не відповідають поточному фільтру.",
   "No language set": "Мова не встановлена",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Немає встановлених зв'язувачів.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "Жодна тема не збігається з поточним фільтром.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "Немає користувача для підписки.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Пусто",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Зауважте, що всіх ботів, яких ви підтримуєте, буде вимкнено.",
   "Note that organizations are limited to five exports per week.": "Зауважте, що організації обмежені п'ятьма експортами на тиждень.",
   "Nothing to preview": "Немає нічого для попереднього перегляду",
@@ -932,6 +940,7 @@
   "Other permissions": "Інші дозволи",
   "Other settings": "Інші налаштування",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "Вихідний формат вебхук повідомлення",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Вимагати теми в каналах повідомлень",
   "Research": "",
   "Resend": "Надіслати повторно",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Пересилання завершилось помилкою. Перезавантажте та повторіть спробу.",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "Відновити чернетку",
   "Restrict email domains of new users?": "Обмежити домени електронної пошти нових користувачів?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "Пошук людей",
   "Search results": "Результати пошуку",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Дізнайтеся, як налаштувати електронну пошту.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Виберіть канал нижче або змініть назву теми.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Показати кількість повідомлень з зірочкою",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Показати/змінити ключ API",
   "Showing messages since {time_string}.": "",
   "Sign up": "Зареєструватися",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Опис каналу не може містити символів нового рядка.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Їх паролі будуть очищений в нашій системі, і будь-які їх боти будуть вимкнені.",
   "Theme": "Оформлення",
+  "There are no bots.": "",
   "There are no current alert words.": "Наразі немає сигнальних слів.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Четвер",
   "Time": "Час",
   "Time format": "Формат часу",
@@ -1240,6 +1259,7 @@
   "Today": "Сьогодні",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Переключити підписку",
   "Toggle the gear menu": "Перемикання механізму меню",
   "Toggle topic mute": "Важіль заглушити тему",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip необхідно відправляти електронні листи, щоб підтвердити адреси користувачів та надсилати сповіщення.",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "більше тем",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, one {} few {} many {} other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, one {} few {} many {} other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, one {} few {} many {} other {}}",
diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po
index 981953d535..5c3c1c65b1 100644
--- a/locale/vi/LC_MESSAGES/django.po
+++ b/locale/vi/LC_MESSAGES/django.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Gyver Chang, 2022\n"
 "Language-Team: Vietnamese (http://app.transifex.com/zulip/zulip/language/vi/)\n"
@@ -21,57 +21,51 @@ msgstr ""
 "Language: vi\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr ""
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "Nhóm đã ngừng hoạt động"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr ""
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr ""
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "Thời gian bắt đầu muộn hơn thời gian kết thúc. Start: {start}, End: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "Không có sẵn dữ liệu phân tích. Vui lòng liên hệ với quản trị viên máy chủ của bạn."
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -80,7 +74,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -89,7 +83,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -98,7 +92,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -107,7 +101,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -116,11 +110,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -136,124 +130,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "Đã xảy ra lỗi. Vui lòng liên hệ {email}"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "Thao tác gửi lại bị lỗi. Xin tải lại trang và thử lần nữa."
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "Đã xảy ra lỗi. Vui lòng đợi vài giây và thử lại."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -261,54 +255,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "Lỗi"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -317,8 +318,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "Lỗi server nội bộ"
 
@@ -423,7 +457,7 @@ msgstr ""
 msgid "Total users"
 msgstr "Tổng số người dùng"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "Người dùng"
 
@@ -563,36 +597,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "Hủy"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "xác nhận"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "Rate limit exceeded."
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "You can try again in %(retry_after)s seconds."
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -614,6 +744,451 @@ msgstr "Categories"
 msgid "All"
 msgstr "Tất cả"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -633,11 +1208,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -652,12 +1223,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "Tạo nhóm"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -690,51 +1261,48 @@ msgstr "Education pricing"
 msgid "View pricing"
 msgstr "View pricing"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "Zulip for business"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "Liên hệ hỗ trợ"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "Cơ quan"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -750,14 +1318,6 @@ msgstr "Avatar"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -805,7 +1365,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "Đăng ký"
 
@@ -838,8 +1398,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "Đăng nhập"
 
@@ -872,26 +1432,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "Cập nhật có thể bị trì hoãn."
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "Thử ngay và luôn."
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr ""
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1114,21 +1670,21 @@ msgstr "Người qua đường"
 msgid "Normal users"
 msgstr "Người dùng thường"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "Tắt"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr ""
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2351,7 +2907,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2371,7 +2927,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2381,12 +2946,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "Find accounts"
 
@@ -2418,7 +2983,7 @@ msgstr "Hợp nhất"
 msgid "Desktop & mobile apps"
 msgstr "Ứng dụng máy tính & điện thoại"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "New organization"
 
@@ -2786,25 +3351,16 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "Rate limit exceeded."
-
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
 "You have exceeded the limit for how\n"
 "                        often a user can perform this action."
 msgstr "You have exceeded the limit for how\n                        often a user can perform this action."
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "You can try again in %(retry_after)s seconds."
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2973,6 +3529,22 @@ msgstr "What are you interested in?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "Reset your password"
@@ -3130,123 +3702,107 @@ msgid ""
 "                        "
 msgstr "\n                        You can also use the Zulip desktop app.\n                        "
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "signups"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} accepted your invitation to join Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "Invalid order mapping."
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "Field id {id} not found."
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "Default stream group '{group_name}' already exists"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "Stream '{stream_name}' is already present in default stream group '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "To protect users, Zulip limits the number of invitations you can send in one day. Because you have reached the limit, no invitations were sent."
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "Your account is too new to send invites for this organization. Ask an organization admin, or a more experienced user."
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "Một số tài khoản email chưa xác nhận nên chúng tôi không thể gửi lời mời."
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "Chúng tôi không thể mời ai."
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3276,72 +3832,72 @@ msgstr "Cannot change message content while changing stream"
 msgid "Widgets cannot be edited."
 msgstr "Widgets cannot be edited."
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "Your organization has turned off message editing"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "Bạn không được cho phép chỉnh sửa tinh nhắn này"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "The time limit for editing this message has passed"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} has marked this topic as resolved."
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} has marked this topic as unresolved."
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "This topic was moved to {new_location} by {user}."
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "A message was moved from this topic to {new_location} by {user}."
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} messages were moved from this topic to {new_location} by {user}."
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "This topic was moved here from {old_location} by {user}."
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} messages were moved here from {old_location} by {user}."
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "Your organization has turned off message editing"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "Bạn không được cho phép chỉnh sửa tinh nhắn này"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "The time limit for editing this message has passed"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "You don't have permission to move this message"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3360,137 +3916,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "Tin nhắn không hợp lệ"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "Không thể chuẩn bị tin nhắn"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "Expected exactly one stream"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "Invalid data type for stream"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "Invalid data type for recipients"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "Recipient lists may contain emails or user IDs, but not both."
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, but there is no stream with that ID."
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "Your bot {bot_identity} tried to send a message to stream {stream_name}, but that stream does not exist. Click [here]({new_stream_link}) to create it."
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "Your bot {bot_identity} tried to send a message to stream {stream_name}. The stream exists but does not have any subscribers."
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "Topics are required in this organization"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "Widgets: API programmer sent invalid JSON content"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "Widgets: {error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "A custom emoji with this name already exists."
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} changed the [access permissions](/help/stream-permissions) for this stream from **{old_policy}** to **{new_policy}**."
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3499,38 +4060,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n\n* **Old permissions**: {old_policy}.\n* **New permissions**: {new_policy}.\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "No description."
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} changed the description for this stream."
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "Old description"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "New description"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "Forever"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "Messages in this stream will now be retained forever."
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3544,7 +4105,7 @@ msgstr "{user} has changed the [message retention period](/help/message-retentio
 msgid "You cannot attach a submessage to this message."
 msgstr "You cannot attach a submessage to this message."
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3554,187 +4115,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "This API is not available to incoming webhook bots."
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "Tài khoản không liên kết với miền con"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "This endpoint does not accept bot requests."
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "Must be an server administrator"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "Thiếu sự cho phép"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "This endpoint requires HTTP basic authentication."
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "Invalid authorization header for basic auth"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "Missing authorization header for basic auth"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook bots chỉ có thể truy cập webhook"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "Your account {username} has been deactivated. Please contact your organization administrator to reactivate it."
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "The password is too weak."
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "Subdomain needs to have length 3 or greater."
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "Subdomain cannot start or end with a '-'."
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "Subdomain can only have lowercase letters, numbers, and '-'s."
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "Xin hãy sử dụng địa chỉ email thật."
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "The organization you are trying to join using {email} does not exist."
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "Please request an invite for {email} from the organization administrator."
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "Your email address, {email}, is not in one of the domains that are allowed to register for accounts in this organization."
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "Email addresses containing + are not allowed in this organization."
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "New members cannot join this organization because all Zulip licenses are in use. Please contact the person who invited you and ask them to increase the number of licenses, then try again."
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "New password"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "New password confirmation"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "Your password has been disabled because it is too weak. Reset your password to create a new one."
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "Token"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "Please enter at most 10 emails."
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "We couldn't find that Zulip organization."
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "Chủ đề bị thiếu"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "Không thể gửi cho nhiều dòng hội thoại cùng lúc"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "Missing stream"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "Tin nhắn phải có người nhận"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "Kiểu tin nhắn không hợp lệ"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "Invalid attachment"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "An error occurred while deleting the attachment. Please try again later."
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "Message must have recipients!"
 
@@ -3791,88 +4352,88 @@ msgstr "User has disabled synchronizing drafts."
 msgid "Draft does not exist"
 msgstr "Draft does not exist"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "Open Zulip to see the spoiler content"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "Địa chỉ không hợp lệ"
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "Ngoài miền của bạn"
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "Email addresses containing + are not allowed."
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "Reserved for system bots."
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} already has an account"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "Đã có tài khoản."
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "Account has been deactivated."
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "Invalid custom emoji."
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "Invalid custom emoji name."
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "This custom emoji has been deactivated."
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "Invalid emoji code."
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "Invalid emoji name."
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "Kiểu emoji không hợp lệ."
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "Must be an organization administrator or emoji author"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "Emoji name is missing"
 
@@ -3880,119 +4441,119 @@ msgstr "Emoji name is missing"
 msgid "Could not allocate event queue"
 msgstr "Could not allocate event queue"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "Not logged in: API authentication or user session required"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "Stream '{stream}' does not exist"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "Stream with ID '{stream_id}' does not exist"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "organization owner"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "user"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "Cannot deactivate the only {entity}."
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "Invalid Markdown include statement: {include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API usage exceeded rate limit"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "Malformed JSON"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "Must be an organization member"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "Must be an organization administrator"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "Must be an organization owner"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "Your username or password is incorrect"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "Account is deactivated"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "This organization has been deactivated"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "The mobile push notification service registration for your server has been deactivated"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "Password authentication is disabled in this organization"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "Your password has been disabled and needs to be reset"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "Mã API không hợp lệ"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Malformed API key"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "Unable to parse request: Did {webhook_name} generate this event?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "Invalid subdomain"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "Từ chối truy cập"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4000,47 +4561,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "Reaction already exists."
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "Reaction doesn't exist."
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "Custom external account must define URL pattern"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "Invalid external account type"
 
@@ -4138,106 +4699,106 @@ msgstr "Productivity"
 msgid "Version control"
 msgstr "Version control"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "Tin nhắn không được để trống"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "Message must not contain null bytes"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "Invalid narrow operator: {desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "Missing 'anchor' argument."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "Invalid anchor"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "If you are new to Zulip, check out our [Getting started guide]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "Hello, and welcome to Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "I can also help you get set up! Just click anywhere on this message or press `r` to reply."
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "Here are a few messages I understand:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "Go to [Profile settings](#settings/profile) to add a [profile picture](/help/change-your-profile-picture) and edit your [profile information](/help/edit-your-profile)."
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4246,119 +4807,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "In Zulip, streams [determine who gets a message](/help/streams-and-topics). They are similar to channels in other chat apps."
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[Browse and subscribe to streams](#streams/all)."
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "In Zulip, topics [tell you what a message is about](/help/streams-and-topics). They are light-weight subjects, very similar to the subject line of an email."
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app quickly and efficiently."
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip uses [Markdown](/help/format-your-message-using-markdown), an intuitive format for **bold**, *italics*, bulleted lists, and more. Click [here](#message-formatting) for a cheat sheet."
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "Check out our [messaging tips](/help/messaging-tips) to learn about emoji reactions, code blocks and much more!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "Check out our [Getting started guide](/help/getting-started-with-zulip), or browse the [Help center](/help/) to learn more!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "I’m sorry, I did not understand your message. Please try one of the following commands:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "This is a private stream, as indicated by the lock icon next to the stream name."
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "Private streams are only visible to stream members."
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "To manage this stream, go to [Stream settings]({stream_settings_url}) and click on `{initial_private_stream_name}`."
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "This is a message on stream #**{default_notification_stream_name}** with the topic `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "Topics are a lightweight tool to keep conversations organized."
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "You can learn more about topics at [Streams and topics]({about_topics_help_url})."
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "This is a message on stream #**{default_notification_stream_name}** with the topic `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "Invalid JSON in response"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "Invalid response format"
 
@@ -4372,45 +4933,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token không tồn tại"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "This organization has disabled including message content in mobile push notifications"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} mentioned @{user_group_name}:"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} mentioned you:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} mentioned everyone:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4422,23 +4983,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "User not authorized for this query"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' is no longer using Zulip."
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4458,21 +5019,21 @@ msgstr "Missing '{var_name}' argument"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "Bad value for '{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "Malformed payload"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4509,7 +5070,7 @@ msgstr "Please choose one: 'stream' or 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4523,7 +5084,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4532,7 +5093,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "Web-public streams are not enabled."
 
@@ -4564,28 +5125,28 @@ msgstr "Topic can't be empty!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "Subscriber data is not available for this stream"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "Unable to retrieve subscribers for private stream"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} is not a boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} is not a date"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} is not a dict"
@@ -4596,18 +5157,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} is not a float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} is too small"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} is not an integer"
@@ -4617,24 +5178,24 @@ msgstr "{var_name} is not an integer"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} is too large"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} is not a list"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "Invalid {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} is too long (limit: {max_length} characters)"
@@ -4644,8 +5205,8 @@ msgstr "{var_name} is too long (limit: {max_length} characters)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} is not a string"
@@ -4664,21 +5225,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "Upload would exceed your organization's upload quota."
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "Could not decode image; did you upload an image file?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "Image size exceeds limit."
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "Corrupt animated image."
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "Unknown animated image format."
 
@@ -4735,161 +5296,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "Tên quá dài!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "Name too short!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "Invalid characters in name!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "Invalid format!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "Name is already in use!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "Tên hoặc tên tài khoản không ổn"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "Invalid configuration data!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "Invalid bot type"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "Invalid interface type"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "Không tìm thấy bot"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "Không tìm thấy người dùng"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "User is deactivated"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} cannot be blank."
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} has incorrect length {length}; should be {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} is not a valid hex color code"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} should have exactly {length} items"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{key_name} key is missing from {var_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} is not an allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} is wrong)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} is not a URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' cannot be blank."
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' is not a valid choice for '{field_name}'."
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} is not a string or an integer list"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} is not a string or integer"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} does not have a length"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} is missing"
@@ -4923,215 +5484,211 @@ msgstr "CSRF error: {reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "stream events"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "Available on Zulip Cloud Standard. Upgrade to access."
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "Invalid characters in emoji name"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "Unknown regular expression error"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "Invalid characters in pygments language"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "Dành riêng cho Admin"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "Không ai"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "Organization owner"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "Organization administrator"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "Moderator"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "Member"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "Guest"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "Web-public"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "Công cộng"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "Private, shared history"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "Private, protected history"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "Public, protected history"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "All stream members can post"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "Only organization administrators can post"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "Only organization administrators and moderators can post"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "Only organization full members can post"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode emoji"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "Custom emoji"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip extra emoji"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "List of options"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "Date picker"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "Link"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "External account"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "Unknown regular expression error"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode emoji"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "Custom emoji"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip extra emoji"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "Invalid characters in emoji name"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "Invalid characters in pygments language"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "stream events"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "Available on Zulip Cloud Standard. Upgrade to access."
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "Web-public"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "Công cộng"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "Private, shared history"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "Private, protected history"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "Public, protected history"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "All stream members can post"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "Only organization administrators can post"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "Only organization administrators and moderators can post"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "Only organization full members can post"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "Dành riêng cho Admin"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "Không ai"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "Organization owner"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "Organization administrator"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "Moderator"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "Member"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "Guest"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "Unknown IP address"
@@ -5144,20 +5701,20 @@ msgstr "an unknown operating system"
 msgid "An unknown browser"
 msgstr "An unknown browser"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "Missing 'queue_id' argument"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "Missing 'last_event_id' argument"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "An event newer than {event_id} has already been pruned!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "Event {event_id} was not in this queue"
@@ -5195,41 +5752,41 @@ msgstr "Password is incorrect."
 msgid "User-Agent header missing from request"
 msgstr "User-Agent header missing from request"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "Label cannot be blank."
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "Field must have at least one choice."
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "Invalid field type."
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "A field with that label already exists."
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "Default custom field cannot be updated."
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "Endpoint not available in production."
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "DevAuthBackend not enabled."
 
@@ -5280,7 +5837,7 @@ msgstr "Bạn phải chọn ít nhất một địa chỉ email."
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5329,19 +5886,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "Thiếu người gửi"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Mirroring not allowed with recipient user IDs"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "Invalid mirrored message"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "Zephyr mirroring is not allowed in this organization"
 
@@ -5357,42 +5914,46 @@ msgstr "User already muted"
 msgid "User is not muted"
 msgstr "User is not muted"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "Presence is not supported for bot users."
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "No presence data for {user_id_or_email}"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "Client did not pass any new values."
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token trống hoặc có độ dài không hợp lệ"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "Invalid APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5407,55 +5968,55 @@ msgstr "At least one of the following arguments must be present: emoji_name, emo
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "At least one authentication method must be enabled."
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "Must be a demo organization."
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "The domain {domain} is already a part of your organization."
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "No entry found for domain {domain}."
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "You must upload exactly one file."
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5489,7 +6050,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "You must upload exactly one icon."
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "Linkifier not found."
 
@@ -5517,71 +6078,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "Private streams cannot be made default."
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "You must pass \"new_description\" or \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "Giá trị \"op\" không hợp lệ. Chọn \"thêm\" hoặc\"xóa\"."
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "Stream already has that name!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "Không có gì để thực hiện. Chọn \"Thêm\" hoặc \"Xóa\"."
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} subscribed you to the stream {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} subscribed you to the following streams:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "Unable to access stream ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "You can only invite other Zephyr mirroring users to private streams."
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} created the following streams: {stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} created a new stream {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "new streams"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** stream created by {user_name}. **Description:**"
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5590,7 +6151,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "Invalid json for submessage"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "You are not authorized to view this file.
"
 
@@ -5614,112 +6175,112 @@ msgstr "Empty 'to' list"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "Invalid token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "Invalid filename"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "Bạn phải chọn file để gửi lên"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "Bạn chỉ có thể gửi lên từng file một"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "Không bổ sung thông tin mới"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "User {user_id} is already a member of this group"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "Avatar changes are disabled in this organization."
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "Email address changes are disabled in this organization."
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "Invalid default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "Your Zulip password is managed in LDAP"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "Sai mật khẩu!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "New password is too weak!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "Bạn phải tải lên duy nhất một ảnh avatar."
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "Topic is not muted"
 
@@ -5780,43 +6341,43 @@ msgstr "Disposable email addresses are not allowed in this organization"
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "Invalid Zoom access token"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "Zoom credentials have not been configured"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "Invalid Zoom session identifier"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "Invalid Zoom credentials"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "Failed to create Zoom call"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton is not configured."
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "Invalid signature."
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "Error connecting to the BigBlueButton server."
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "Error authenticating to the BigBlueButton server."
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton server returned an unexpected error."
 
@@ -5849,11 +6410,11 @@ msgstr "Invalid payload"
 msgid "Unknown webhook request"
 msgstr "Unknown webhook request"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "Chủ đề không được để trống"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "Nội dung không thể để trống"
 
@@ -5880,7 +6441,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "Unable to handle Pivotal payload"
 
@@ -5897,83 +6458,105 @@ msgstr "Message from Slack"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "Invalid subdomain for push notifications bouncer"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "Must validate with valid Zulip server API key"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "Invalid UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "Invalid token type"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "Missing user_id or user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "Data is out of order."
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "You need to reset your password."
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "Missing id_token parameter"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "Invalid OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "Can't use both mobile_flow_otp and desktop_flow_otp together."
diff --git a/locale/vi/translations.json b/locale/vi/translations.json
index 8be1403bf6..c677657f5b 100644
--- a/locale/vi/translations.json
+++ b/locale/vi/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "(forever)",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "(no topic)",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "Thêm",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "Thêm một mã playground mới",
@@ -207,6 +207,7 @@
   "Bot": "Bot",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "Mã playgrounds",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "Thiết lập cấu hình các phương thức xác thực cho tổ chức của bạn.",
   "Configure the default streams new users are subscribed to when joining your organization.": "Thiết lập cấu hình các stream mặc định mà người dùng mới đã đăng ký khi tham gia tổ chức của bạn.",
   "Confirm": "xác nhận",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "Xem xéttìm kiếm tất cả các stream công khai.",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "Sao chép link",
   "Copy link to message": "Sao chép link của tin nhắn",
+  "Copy link to profile": "",
   "Copy link to topic": "Sao chép link của topic",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "Tải xuống",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "Tải tập tin",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "Hiệu ứng",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "Email",
   "Email address": "",
   "Email address changes are disabled in this organization.": "Email address changes are disabled in this organization.",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "Hình ảnh",
   "In a meeting": "Đang họp",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "Không hoạt động",
   "Inactive bots": "Các bot không hoạt động",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "Quản lý người dùng này",
   "Manage user": "Quản lý người dùng",
+  "Manage your API key": "",
   "March": "Tháng 3",
   "Mark all messages as read": "Đánh dấu tất cả các tin nhắn là đã đọc",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "Dánh dấu đã đọc",
   "Mark as resolved": "Đánh dấu là đã giải quyết",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "Đề cập trong",
   "Mentions": "Đề cập",
   "Menus": "Thực đơn",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "Nhắn tin # {stream_name}",
   "Message #{stream_name} > {topic_name}": "Tin nhắn # {stream_name}> {topic_name}",
   "Message actions": "Tin nhắn hành động",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "Nhắn tin cho {accept_label}",
   "Message {recipient_names}": "Nhắn tin cho {receiver_names}",
   "Message {recipient_name} ({recipient_status})": "Nhắn tin cho {accept_name} ({accept_status})",
+  "Messages": "",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "Không bao giờ hết hạn",
   "New": "Mới",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "Email mới",
   "New message": "Tin nhắn mới",
   "New option": "Tùy chọn mới",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "Chủ đề chưa đọc tiếp theo",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "Không có bot nào phù hợp với bộ lọc hiện tại của bạn.",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "No description.",
   "No drafts selected": "",
   "No drafts.": "Không có bản nháp.",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "Không có lời mời nào phù hợp với bộ lọc của bạn.",
   "No language set": "Không có ngôn ngữ nào được đặt",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "Không có công cụ liên kết nào được đặt.",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "Không có người dùng phù hợp.",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "Không có chủ đề nào được đánh dấu là đã giải quyết.",
   "No topics match your current filter.": "Không có chủ đề nào phù hợp với bộ lọc hiện tại của bạn.",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "Không có đăng ký nhóm người dùng.",
   "No user groups": "",
   "No user to subscribe.": "Không có người dùng để đăng ký.",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "Không có",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "Lưu ý rằng bất kỳ bot nào mà bạn duy trì sẽ bị vô hiệu hóa.",
   "Note that organizations are limited to five exports per week.": "Lưu ý rằng các tổ chức bị giới hạn năm lần xuất mỗi tuần.",
   "Nothing to preview": "Không có gì để xem trước",
@@ -932,6 +940,7 @@
   "Other permissions": "Những quyền hạn khác",
   "Other settings": "Các thiết lập khác",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "Đang bệnh",
   "Outgoing webhook message format": "Định dạng tin nhắn webhook gửi đi",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "Yêu cầu chủ đề trong tin nhắn luồng",
   "Research": "Research",
   "Resend": "Gửi lại",
-  "Resend invitation": "Gửi lại lời mời",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "Thao tác gửi lại bị lỗi. Xin tải lại trang và thử lần nữa.",
+  "Reset to default notifications": "",
   "Reset zoom": "Đặt lại thu phóng",
   "Restore draft": "Khôi phục bản nháp",
   "Restrict email domains of new users?": "Giới hạn email domain của người dùng mới không?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "Tìm kiếm trong chủ đề hoặc nội dung tin nhắn.",
   "Search people": "Tìm người",
   "Search results": "Kết quả tìm kiếm",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "Xem cách định cấu hình email.",
   "Select a stream": "",
   "Select a stream below or change topic name.": "Chọn một Stream bên dưới hoặc thay đổi tên chủ đề.",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "Hiển thị số lượng tin nhắn có gắn dấu sao",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "Hiển thị / thay đổi mã API của bạn",
   "Showing messages since {time_string}.": "",
   "Sign up": "Đăng ký",
   "Silent mentions do not trigger notifications.": "Đề cập im lặng không kích hoạt thông báo.",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "Mô tả Stream không được chứa các ký tự dòng mới.",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "Mật khẩu của họ sẽ bị xóa khỏi hệ thống của chúng tôi và bất kỳ bot nào họ duy trì sẽ bị vô hiệu hóa.",
   "Theme": "Chủ đề màu sắc",
+  "There are no bots.": "",
   "There are no current alert words.": "Không có từ cảnh báo hiện tại.",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "Thứ năm",
   "Time": "Thời gian",
   "Time format": "Định dạng thời gian",
@@ -1240,6 +1259,7 @@
   "Today": "Hôm nay",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "Chuyển đổi đăng ký",
   "Toggle the gear menu": "Chuyển đổi thực đơn bánh răng",
   "Toggle topic mute": "Chuyển đổi chế độ ẩn chủ đề",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip cần gửi thư để xác nhận địa chỉ email của người dùng và gửi thông báo ",
   "Zulip needs your permission to enable desktop notifications.": "Zulip cần sự cho phép của bạn để bật thông báo trên màn hình.",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Các bản dịch của Zulip được đóng góp bởi cộng đồng dịch giả tình nguyện tuyệt vời của chúng tôi. Nếu bạn muốn trợ giúp, hãy xem hướng dẫn dịch Zulip.",
@@ -1541,6 +1561,9 @@
   "more topics": "thêm chủ đề",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",
diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po
index b36e967c25..df65e1117d 100644
--- a/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/locale/zh_Hans/LC_MESSAGES/django.po
@@ -4,7 +4,7 @@
 # 
 # Translators:
 # Chriser Chaoo , 2017
-# Clay Cheng <569735195@qq.com>, 2023
+# Clay Cheng <569735195@qq.com>, 2023-2024
 # FaZang, 2022
 # Greg Price , 2017
 # Hanson Sin , 2020
@@ -18,9 +18,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: Clay Cheng <569735195@qq.com>, 2023\n"
+"Last-Translator: Clay Cheng <569735195@qq.com>, 2023-2024\n"
 "Language-Team: Chinese Simplified (http://app.transifex.com/zulip/zulip/language/zh-Hans/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -28,57 +28,51 @@ msgstr ""
 "Language: zh-Hans\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "禁止访客用户"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "无效的组织"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "公开频道"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "私有频道"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr "私信"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr "私聊群组消息"
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "开始时间晚于结束时间。 开始: {start}, 结束: {end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "没有分析数据可用。 请联系您的服务器管理员。"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "无效参数"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -87,7 +81,7 @@ msgid ""
 "users to join."
 msgstr "您的组织没有剩余的 Zulip 许可证,并且不能再接受新用户。请[增加许可数量]({billing_page_link}) 或[停用非活动用户]({deactivate_user_help_page_link}) 以允许新用户加入。"
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -96,7 +90,7 @@ msgid ""
 "join."
 msgstr "您的组织只剩下一个 Zulip 许可证。您可以 [增加许可证数量]({billing_page_link}) 或 [停用非活动用户]({deactivate_user_help_page_link}) 以允许多个用户加入。"
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -105,7 +99,7 @@ msgid ""
 "join."
 msgstr "您的组织只剩下两个 Zulip 许可证。您可以 [增加许可证数量]({billing_page_link}) 或 [停用非活动用户]({deactivate_user_help_page_link}) 以允许两个以上的用户加入。"
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -114,7 +108,7 @@ msgid ""
 "join."
 msgstr "您的组织只剩下三个 Zulip 许可证。您可以 [增加许可证数量]({billing_page_link}) 或 [停用非活动用户]({deactivate_user_help_page_link}) 以允许三个以上的用户加入。"
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -123,11 +117,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr "新成员 ({email}) 无法加入您的组织,因为所有 Zulip 许可证都在使用中。请[增加许可数量]({billing_page_link}) 或[停用非活动用户]({deactivate_user_help_page_link}) 以允许新成员加入。"
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr "该组织的所有 Zulip 许可证当前都在使用中。"
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -143,124 +137,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} 以 {last4} 结尾"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "未知的付款方式。请联系{email}。"
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "发生了一些错误。请联系 {email}。"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "出错啦!请刷新页面!"
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "出错啦!请过几秒再试."
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "无法更新计划。该计划已过期并被新计划取代。"
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "无法更新计划。计划已经结束。"
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr "无法手动更新许可证。您的计划是自动许可证管理。"
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr "在当前计费周期内,您的计划已使用 {licenses} 许可。"
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr "您不能减少当前计费周期内的许可证。"
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr "您的计划已安排续订 {licenses_at_next_renewal} 许可证。"
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr "没什么可改变的。"
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr "该组织没有客户!"
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr "找不到会话"
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr "必须是帐单管理员或组织所有者"
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr "未找到付款意图"
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
-msgstr "传递 stripe_session_id 或 stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
+msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -268,54 +262,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "无效参数"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "错误"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr "方法不被允许 (405)"
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr "页面未找到 (404)"
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -324,8 +325,41 @@ msgid ""
 "                        "
 msgstr "\n如果此错误是意外的,你可以联系支持。"
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr "方法不被允许 (405)"
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr "服务器内部错误"
 
@@ -430,7 +464,7 @@ msgstr "15日活跃数"
 msgid "Total users"
 msgstr "总用户数"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "用户"
 
@@ -570,36 +604,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "确保将链接正确复制到浏览器中。如果您仍然遇到此页面,这可能是我们的错。我们很抱歉。"
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "账单"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "取消"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "确认"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr "账单状态"
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr "超出速率限制"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr "超过限速。"
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr "您可以在 %(retry_after)s 秒后重试。"
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -621,6 +751,451 @@ msgstr "分类"
 msgid "All"
 msgstr "所有"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr "Zulip 开发社区"
@@ -640,11 +1215,7 @@ msgstr "以自助托管人身份加入"
 msgid "Join as a contributor"
 msgstr "作为贡献者加入"
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr "账单状态"
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -659,12 +1230,12 @@ msgstr "账单状态"
 msgid "Create organization"
 msgstr "创建组织"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -697,51 +1268,48 @@ msgstr "教育定价"
 msgid "View pricing"
 msgstr "查看定价"
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr "商务用Zulip"
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "客户支持"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr "从"
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "组织"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr "主题"
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "信息"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "提交"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -757,14 +1325,6 @@ msgstr "头像"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -812,7 +1372,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "注册"
 
@@ -845,8 +1405,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "登录"
 
@@ -879,26 +1439,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr "无法连接到 Zulip。"
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr "更新可能会延迟。"
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr "即将重试…"
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "立即连接"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "消息"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1121,21 +1677,21 @@ msgstr "访客用户"
 msgid "Normal users"
 msgstr "普通用户"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "关闭"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "更新"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2358,7 +2914,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2378,7 +2934,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2388,12 +2953,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "邮箱地址"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "查找账户"
 
@@ -2425,7 +2990,7 @@ msgstr "应用整合"
 msgid "Desktop & mobile apps"
 msgstr "程序和App"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "新组织"
 
@@ -2741,7 +3306,7 @@ msgstr "忘记密码?"
 #: templates/zerver/login.html:163
 msgid ""
 "Don't have an account yet? You need to be invited to join this organization."
-msgstr "还没有帐户?你需要被邀请加入这个社群。"
+msgstr "还没有账号?你需要被邀请加入这个组织。"
 
 #: templates/zerver/new_user_email_address_visibility.html:5
 msgid ""
@@ -2793,13 +3358,9 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr "超出速率限制"
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
-msgstr "超过限速。"
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
+msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
 msgid ""
@@ -2807,11 +3368,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr "您已超出用户执行此操作的频率限制。"
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr "您可以在 %(retry_after)s 秒后重试。"
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2828,7 +3384,7 @@ msgstr ""
 #: templates/zerver/realm_creation_form.html:9
 #: templates/zerver/register.html:48
 msgid "Organization name"
-msgstr "社群名称"
+msgstr "组织名称"
 
 #: templates/zerver/realm_creation_form.html:18
 msgid "Shorter is better than longer."
@@ -2837,7 +3393,7 @@ msgstr "短比长更好一些"
 #: templates/zerver/realm_creation_form.html:34
 #: templates/zerver/register.html:52
 msgid "Organization type"
-msgstr "社群类型"
+msgstr "组织类型"
 
 #: templates/zerver/realm_creation_form.html:47
 #: templates/zerver/register.html:56
@@ -2847,7 +3403,7 @@ msgstr ""
 #: templates/zerver/realm_creation_form.html:56
 #: templates/zerver/register.html:60
 msgid "Organization URL"
-msgstr "社群网址"
+msgstr "组织网址"
 
 #: templates/zerver/realm_creation_form.html:63
 #, python-format
@@ -2872,7 +3428,7 @@ msgstr ""
 
 #: templates/zerver/realm_reactivation.html:13
 msgid "Your organization has been successfully reactivated."
-msgstr "您的社群已经成功地重新激活"
+msgstr "您的组织已经成功地重新激活"
 
 #: templates/zerver/realm_reactivation_link_error.html:4
 msgid "Organization reactivation link expired or invalid"
@@ -2880,16 +3436,16 @@ msgstr ""
 
 #: templates/zerver/realm_reactivation_link_error.html:13
 msgid "The organization reactivation link has expired or is not valid."
-msgstr "社群重新激活链接已过期或无效"
+msgstr "组织重新激活链接已过期或无效"
 
 #: templates/zerver/realm_redirect.html:4
 #: templates/zerver/realm_redirect.html:12
 msgid "Log in to your organization"
-msgstr "登录您的社群"
+msgstr "登录您的组织"
 
 #: templates/zerver/realm_redirect.html:22
 msgid "Enter your organization's Zulip URL:"
-msgstr "输入您的社群Zulip地址:"
+msgstr "输入您的组织Zulip地址:"
 
 #: templates/zerver/realm_redirect.html:25
 msgid "your-organization-url"
@@ -2980,6 +3536,22 @@ msgstr "您对什么感兴趣?"
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr "订阅我 Zulip 的低频量通讯(每年几封电子邮件)。"
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "重置密码"
@@ -3137,123 +3709,107 @@ msgid ""
 "                        "
 msgstr "\n您还可以使用Zulip 桌面应用程序。"
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "注册"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} 刚刚注册了 Zulip。 (总计:{user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} 接受了您加入 Zulip 的邀请!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "无效的命令映射"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "找不到字段ID {id}"
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "“{stream_name}”是默认频道,不能添加到“{group_name}”"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "默认频道组“{group_name}”已存在"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "频道“{stream_name}”已存在于默认频道组“{group_name}”中"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "默认频道组“{group_name}”中不存在频道“{stream_name}”"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr "为了保护用户,Zulip 限制了您一天内可以发送的邀请数量。由于您已达到限制,因此未发送任何邀请。"
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "你的帐号太新了,不能为这个社群发送邀请。询问社群管理人员或更有经验的用户。"
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "一些邮箱没有通过验证,因此我们没有发送邀请"
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr "没有邀请任何人"
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3283,72 +3839,72 @@ msgstr "更改频道时无法更改消息内容"
 msgid "Widgets cannot be edited."
 msgstr "无法编辑小部件。"
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "您的社群已关闭邮件编辑"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "您没有权限编辑该消息"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "编辑消息超时"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr "{user} 已将此主题标记为已解决。"
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr "{user} 已将此主题标记为未解决。"
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr "此主题已由 {user} 移至 {new_location}。"
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr "{user} 将一条消息从该主题移至 {new_location}。"
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr "{changed_messages_count} 消息已由 {user} 从此主题移至 {new_location}。"
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr "此主题由 {user} 从 {old_location} 移至此处。"
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr "{changed_messages_count} 消息由 {user} 从 {old_location} 移至此处。"
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "您的社群已关闭邮件编辑"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "您没有权限编辑该消息"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "编辑消息超时"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "您无权移动此邮件"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3367,137 +3923,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "消息不正确"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "不能渲染消息"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "预计只有一个频道"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "频道的数据类型无效"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "收件人的数据类型无效"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "收件人列表可能包含电子邮件或用户 ID,但不能同时包含两者。"
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "您的机器人 {bot_identity} 尝试向频道 ID {stream_id} 发送消息,但没有具有该 ID 的频道。"
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "您的机器人 {bot_identity} 尝试向频道 {stream_name} 发送消息,但该频道不存在。单击 [此处]({new_stream_link}) 以创建它。"
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "您的机器人 {bot_identity} 尝试向频道 {stream_name} 发送消息。频道存在但没有任何订阅者。"
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr "此社群需要主题"
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr "组件:API程序发送了无效的JSON内容"
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr "小部件:{error_msg}"
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "自定义表情名称已经存在"
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr "{user} 将此频道的 [访问权限](/help/stream-permissions) 从 **{old_policy}** 更改为 **{new_policy}** 。"
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3506,38 +4067,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr "{user} 更改了此频道的 [发布权限](/help/stream-sending-policy):\n\n* **旧权限** :{old_policy}。\n* **新权限** :{new_policy}。\n"
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} 将频道 {old_stream_name} 重命名为 {new_stream_name}。"
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "没有描述信息。"
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr "{user} 更改了此频道的描述。"
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr "旧描述"
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr "新描述"
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr "永远"
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr "此频道中的消息现在将永久保留。"
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3551,7 +4112,7 @@ msgstr "{user} 已更改此频道的 [消息保留期](/help/message-retention-p
 msgid "You cannot attach a submessage to this message."
 msgstr "您不能在此邮件中附加子邮件。"
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3561,187 +4122,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr "这个API不适用于传入的webhook机器人"
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "帐户未与任何子域关联"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr "该端点不接受bot请求"
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr "必须是服务器管理员"
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr "权限不足"
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr "此端点需要HTTP基本身份验证。"
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "基本认证的授权头不正确"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "缺少基本认证的授权头信息"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "WebHook机器人只能访问Webhook内容"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr "您的帐户 {username} 已停用。请联系您的社群管理员以重新激活它。"
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr "密码太弱。"
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "子域名需要长度至少3个字符以上"
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "子域名不能以“-”开头或结尾"
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "子域只能有小写字母,数字和'-'。"
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "请使用真实的邮件地址注册"
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "您尝试使用{email}加入的社群不存在。"
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr "请查询来自社群管理员{email}的邀请"
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "您的电子邮件地址{email}不在允许在该社群中注册帐户的域之一。"
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr "在这个社群中电子邮件地址不能包含+"
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr "新成员无法加入此社群,因为所有 Zulip 许可证都在使用中。请联系邀请您的人并要求他们增加许可证数量,然后重试。"
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "新密码"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "确认新密码"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr "您的密码已被禁用,因为它太弱了。重置您的密码以创建一个新密码。"
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr "令牌"
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "请输入最多10个电子邮件地址"
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr "我们找不到那个Zulip社群"
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "话题不存在"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "不能发送到多个频道"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "失踪的频道"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "消息必须指定接收人"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "消息类型不正确"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "无效的附件文件"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr "删除附件时发生错误。请稍后再试。"
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "信息必须指定接收人"
 
@@ -3798,88 +4359,88 @@ msgstr "用户已禁用同步草稿。"
 msgid "Draft does not exist"
 msgstr "草稿不存在"
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr "打开Zulip看剧透内容"
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "地址不正确"
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "不属于该社区"
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "电子邮件不允许包含+"
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr "为系统机器人保留。"
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} 已经有一个帐户"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "帐户已经存在"
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "账户已被禁用"
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "无效自定义表情"
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "无效自定义表情名称"
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "自定义表情被禁用"
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "无效的表情代码"
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "无效的表情名称"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "无效的表情类型"
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "必须是社群管理员或表情作者"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "缺少表情名称"
 
@@ -3887,119 +4448,119 @@ msgstr "缺少表情名称"
 msgid "Could not allocate event queue"
 msgstr "无法分配事件队列"
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "未登录:提供用户会话或者API认证"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "频道'{stream}不存在"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "ID为'{stream_id}'的频道不存在"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "组织所有者"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "用户"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "不能禁用唯一的 {entity}"
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr "无效的 Markdown 包含语句:{include_statement}"
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr "API请求超过了限制"
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr "JSON格式不正确"
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr "必须是社群成员"
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr "必须是社群管理员"
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "必须是社群所有者"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr "您的用户名或密码不正确"
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "账户被禁用"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "这个社群已被禁用"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr "您的服务器的移动推送通知服务注册已停用"
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr "此社群中已禁用密码身份验证"
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr "您的密码已被禁用,需要重新设置"
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "错误的 API key"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr "Malformed API key"
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr "无法解析请求:{webhook_name} 是否生成了此事件?"
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "无效的子域名"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "访问被拒绝"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4007,47 +4568,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr "反应已经存在"
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr "反应不存在"
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr "自定义外部帐户必须定义 URL 模式"
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "无效的外部帐户类型"
 
@@ -4145,106 +4706,106 @@ msgstr "效率"
 msgid "Version control"
 msgstr "版本控制"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "消息不能为空"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "消息不能包含空字节"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "无效的窄运算符:{desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "缺少“锚”参数。"
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "无效的锚点"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr "如果您是 Zulip 的新手,请查看我们的 [入门指南]({getting_started_url})!"
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "您好,欢迎来到祖利普!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr "我也可以帮你设置!只需单击此消息上的任意位置或按“r”即可回复。"
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr "以下是我理解的一些消息:"
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr "转到 [个人资料设置](#settings/profile) 添加 [个人资料图片](/help/change-your-profile-picture) 并编辑您的 [个人资料信息](/help/edit-your-profile)。"
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4253,119 +4814,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr "在 Zulip 中,频道 [确定谁收到消息](/help/streams-and-topics)。它们类似于其他聊天应用程序中的频道。"
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr "[浏览和订阅频道](#streams/all)。"
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr "在 Zulip 中,主题 [告诉您消息的内容](/help/streams-and-topics)。它们是轻量级主题,非常类似于电子邮件的主题行。"
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr "Zulip 的 [键盘快捷键](#keyboard-shortcuts) 可让您快速有效地浏览应用程序。"
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr "随时按`?`查看[备忘单](#keyboard-shortcuts)。"
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr "Zulip 使用 [Markdown](/help/format-your-message-using-markdown),这是一种直观的 **bold** 、*italics*、项目符号列表等格式。单击  [此处](#message-formatting)  获取备忘单。"
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr "查看我们的[消息提示](/help/messaging-tips),了解表情符号反应、代码块等等!"
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr "查看我们的 [入门指南](/help/getting-started-with-zulip),或浏览 [帮助中心](/help/) 了解更多信息!"
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr "对不起,我没看懂你的留言。请尝试以下命令之一:"
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "这是一个私有频道,如频道名称旁边的锁定图标所示。"
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "私有频道仅对频道成员可见。"
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "要管理此频道,请转到 [频道设置]({stream_settings_url}) 并单击“ {initial_private_stream_name} ”。"
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "这是 #**{default_notification_stream_name}** 频道上的一条消息,主题为“主题演示”。"
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "主题是保持对话井井有条的轻量级工具。"
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "您可以在 [频道和主题]({about_topics_help_url}) 了解有关主题的更多信息。"
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "这是#**{default_notification_stream_name}** 频道上的一条消息,主题为“游泳的海龟”。"
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr "响应中的 JSON 无效"
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr "无效的响应格式"
 
@@ -4379,45 +4940,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token不存在"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr "此社群已禁用在移动推送通知中包含消息内容"
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr "{full_name} 提到 @{user_group_name} :"
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} 提到了您:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} 提到了大家:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4429,23 +4990,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "用户没有授权本次查询"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "“{email}”不再使用 Zulip。"
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4465,21 +5026,21 @@ msgstr "缺少参数: '{var_name}' "
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr "错误值:'{var_name}': {bad_value}"
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr "格式错误的有效载荷"
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4516,7 +5077,7 @@ msgstr "请选择一个:频道名称或者频道ID"
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4530,7 +5091,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4539,7 +5100,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr "未启用 Web 公共频道。"
 
@@ -4571,28 +5132,28 @@ msgstr "主题不能为空!"
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "订阅数据在这个频道不可用"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "无法检索订阅私有频道"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} 不是布尔值"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} 不是日期"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} 不是字典"
@@ -4603,18 +5164,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} 不是浮点数"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr "{var_name} 太小"
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} 不是整数"
@@ -4624,24 +5185,24 @@ msgstr "{var_name} 不是整数"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr "{var_name} 太大"
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} 不是列表"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "{var_name} 无效"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} 过长 (不超过: {max_length}个字符)"
@@ -4651,8 +5212,8 @@ msgstr "{var_name} 过长 (不超过: {max_length}个字符)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} 不是字符串"
@@ -4671,21 +5232,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr "上传超出了您社群的允许范围"
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr "不能解码图片;您上传的是图片文件吗?"
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "图像大小超过了限制"
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr "损坏的动画图像。"
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr "未知的动画图像格式。"
 
@@ -4742,161 +5303,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "名字太长"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "名称太短!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "名称中有无效字符!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "无效的格式!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "用户名已被占用"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "名字或者用户名错误"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "无效的配置数据"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "无效的机器人类型"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "无效的接口类型"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "机器人不存在"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "不存在该用户"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "用户被禁用"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item}不能为空格"
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} 长度不正确 {length}; 应该为 {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} 不是有效的十六进制颜色代码"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} 应该正好有 {length} 项"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "{var_name} 中缺少 {key_name} 键"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} 不是 allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value}({value} 错误)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} 不是网址"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr "URL 模式必须包含'%(username)s'。"
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' 不能为空格"
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr "字段不能有重复的选择。"
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' 不是 '{field_name}'字段的合法选项"
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} 不是字符串或整数列表"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} 不是字符串或整数"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr "{var_name} 没有长度"
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr "{var_name} 丢失"
@@ -4930,215 +5491,211 @@ msgstr "CSRF 错误:{reason}"
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "频道事件"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr "在 Zulip Cloud Standard 上可用。升级访问。"
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "表情符号名称中无效的字符"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr "未知的正则表达式错误"
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr "pygments 语言中的无效字符"
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr "管理者和拥有调节权限的成员"
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "只允许管理员"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "没人"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr "社群所有者"
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr "社群管理员"
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr "版主"
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "成员"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "访客"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr "网络公开"
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "公开"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr "私人的、共享的历史消息"
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr "私人的、受保护的历史消息"
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr "公开的、受保护的历史"
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "所有信息频道成员都可以发帖"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "只有社群管理员可以发帖"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr "只有社群管理员和版主可以发帖"
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "只有社群正式成员才能发帖"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode 表情符号"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "自定义表情"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip额外表情"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr "选项列表"
 
-#: zerver/models.py:5029
-msgid "Person picker"
-msgstr "用户选择"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
+msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
-msgstr "短文本"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
+msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
-msgstr "长文本"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
+msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "日期选择"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "链接"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr "外部帐户"
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr "未知的正则表达式错误"
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode 表情符号"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "自定义表情"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip额外表情"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "表情符号名称中无效的字符"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr "pygments 语言中的无效字符"
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "频道事件"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr "在 Zulip Cloud Standard 上可用。升级访问。"
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr "网络公开"
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "公开"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr "私人的、共享的历史消息"
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr "私人的、受保护的历史消息"
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr "公开的、受保护的历史"
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "所有信息频道成员都可以发帖"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "只有社群管理员可以发帖"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr "只有社群管理员和版主可以发帖"
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "只有社群正式成员才能发帖"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr "管理者和拥有调节权限的成员"
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "只允许管理员"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "没人"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr "社群所有者"
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr "社群管理员"
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr "版主"
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "成员"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "访客"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "未知IP地址"
@@ -5151,20 +5708,20 @@ msgstr "未知的操作系统"
 msgid "An unknown browser"
 msgstr "未知的浏览器"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "缺少参数'queue_id'"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "缺少参数'last_event_id'"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr "比 {event_id} 更新的事件已被修剪!"
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr "事件 {event_id} 不在此队列中"
@@ -5202,41 +5759,41 @@ msgstr "密码不正确。"
 msgid "User-Agent header missing from request"
 msgstr "请求中缺少用户代理标头"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr "标签不能为空。"
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr "字段必须至少有一个选项"
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "无效字段类型。"
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr "具有该标签的字段已存在。"
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "无法更新默认自定义字段。"
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr "端点在生产中不可用。"
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr "未启用 DevAuthBackend。"
 
@@ -5287,7 +5844,7 @@ msgstr "必须指定至少一个邮箱地址"
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5336,19 +5893,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "缺少发送人"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "不允许对收件人用户ID进行镜像"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "镜像消息不正确(Invalid mirrored message)"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr "这个社群禁止Zephyr镜像"
 
@@ -5364,42 +5921,46 @@ msgstr "用户已静音"
 msgid "User is not muted"
 msgstr "用户未静音"
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "不支持机器人的用户不存在。"
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr "{user_id_or_email} 没有存在数据"
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr "客户端没有传递任何新值。"
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr "如果客户端传递 emoji_code 或反应类型,则客户端必须传递 emoji_name。"
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "Token为空或者长度不正确"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "无效的 APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5414,55 +5975,55 @@ msgstr "至少提供一个下面的参数:表情名称,表情代码"
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr "必须至少启用一种身份验证方法。"
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr "必须是演示社群。"
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "域 {domain} 已经是您社群的一部分。"
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "找不到域 {domain} 的条目。"
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr "你只能上传一个文件。"
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5496,7 +6057,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "你必须上传一个图标"
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr "未找到链接器。"
 
@@ -5524,71 +6085,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr "不能将私有频道设为默认值。"
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "您必须传递“new_description”或“new_group_name”。"
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "“op”的无效值。使用“添加”或“删除”。"
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "频道已经有了这个名字!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr "没有动作,至少指定\"add\"或者\"delete\""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} 为您订阅了频道 {stream_name}。"
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} 为您订阅了以下频道:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "无法访问频道 ({stream_name})。"
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "您只能邀请其他Zephyr镜像用户到私有频道。"
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} 创建了以下频道:{stream_str}。"
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} 创建了一个新频道 {stream_str}。"
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "新频道"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr "**{policy}** 频道由 {user_name} 创建。 **频道介绍:** "
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5597,7 +6158,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "子消息的json无效"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr "没有权限查看这个文件!
"
 
@@ -5621,112 +6182,112 @@ msgstr "空的“到”列表"
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "令牌无效"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "无效的文件名"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "必须指定要上传的文件"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "一次只可以上传一个文件"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr "没有提供新的数据"
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "用户 {user_id} 已经是该组的成员"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr "用户组 {group_id} 已经是该组的子组。"
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr "用户组 {group_id} 不是该组的子组。"
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr "本社群禁止修改头像"
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "本社群禁止更改电子邮件地址。"
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "无效的默认语言"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr "您的Zulip密码由LDAP管理"
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "密码错误!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr "新密码太弱!"
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "必须上传恰好一个头像文件"
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "话题未设置免打扰"
 
@@ -5787,43 +6348,43 @@ msgstr "本社群不允许使用一次性电子邮件地址"
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "无效的 Zoom 访问令牌"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr "缩放凭据尚未配置"
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "无效的缩放会话标识符"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "无效的缩放凭据"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "未能创建 Zoom 通话"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr "BigBlueButton 未配置。"
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr "无效的签名。"
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr "连接到 BigBlueButton 服务器时出错。"
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr "对 BigBlueButton 服务器进行身份验证时出错。"
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr "BigBlueButton 服务器返回意外错误。"
 
@@ -5856,11 +6417,11 @@ msgstr "无效的负载"
 msgid "Unknown webhook request"
 msgstr "未知的Webhook请求"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "话题不能为空"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "内容不能为空"
 
@@ -5887,7 +6448,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr "Payload 中缺少 events 键"
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr "无法处理Pivotal的payload"
 
@@ -5904,83 +6465,105 @@ msgstr "来自Slack的消息"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "推送通知到无效子域"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "必须验证有效的Zulip服务器 API Key"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "无效的 UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "无效的Token类型"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "缺少 user_id 或 user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr "数据超出要求"
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "您需要重设密码。"
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "缺少 id_token 参数"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "无效的OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "不能同时使用 mobile_flow_otp 和 desktop_flow_otp。"
diff --git a/locale/zh_Hans/translations.json b/locale/zh_Hans/translations.json
index 0a329ef475..5b284959a4 100644
--- a/locale/zh_Hans/translations.json
+++ b/locale/zh_Hans/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "(附件)",
   "(forever)": "(永久)",
   "(hidden)": "(隐藏)",
-  "(no description)": "(太懒啦,没有留下什么介绍)",
   "(no topic)": "(无话题)",
   "(or )": "",
   "(you)": "(您)",
   "({message_retention_days} days)": "({message_retention_days} 天)",
   "/dark (Switch to the dark theme)": "/dark (切换至深色界面)",
   "/light (Switch to light theme)": "/light (切换至浅色界面)",
-  "/me is excited (Display action text)": "/me 太激动了(显示动作文本) ",
-  "/poll Where should we go to lunch today? (Create a poll)": "/poll (创建投票命令)我们今天去哪里吃午饭呢?",
-  "/todo (Create a todo list)": "/todo (创建待办清单 ToDo List)",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1天",
   "1 hour": "1小时",
   "1 week": "1周",
@@ -28,7 +27,7 @@
   "6 hours": "6 小时",
   "Total messages: {total_messages}": "所有消息: {total_messages}",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "{file_name} 将删除。此操作无法撤消。
",
-  "Stream will be announced in #{notifications_stream}.
": "频道创建的通知将在  #{notifications_stream} 发布。
",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "对不起,您搜索的消息是由多人发送的,搜索终止。
",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "对不起,您搜索的消息属于多个频道,搜索终止。
",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "您正在搜索属于多个话题的消息,搜索终止。
",
@@ -76,6 +75,7 @@
   "Activity unknown": "活动情况未知",
   "Add": "新增",
   "Add GIF": "新增 GIF",
+  "Add a description": "",
   "Add a new alert word": "新增敏感词",
   "Add a new bot": "新增机器人",
   "Add a new code playground": "新增代码编辑器",
@@ -207,6 +207,7 @@
   "Bot": "机器人",
   "Bot email": "机器人邮箱",
   "Bot email (a-z, 0-9, and dashes only)": "机器人电子邮箱(仅限字母、数字和下划线)",
+  "Bot is deactivated": "",
   "Bot owner": "机器人主人",
   "Bot type": "机器人类型",
   "Bots": "机器人",
@@ -257,7 +258,7 @@
   "Close this dialog window": "关闭此对话窗口",
   "Code": "",
   "Code playgrounds": "代码编辑器",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "折叠消息",
   "Collapse direct messages": "",
   "Collapse message": "折叠消息",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "为你的社群配置身份验证方式。",
   "Configure the default streams new users are subscribed to when joining your organization.": "设置新用户在加入社群时默认订阅的频道",
   "Confirm": "确认",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "搜索所有公共频道.",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "复制代码",
   "Copy link": "复制链接",
   "Copy link to message": "将链接复制到消息",
+  "Copy link to profile": "",
   "Copy link to topic": "复制主题链接",
   "Copy mention syntax": "复制提及语法",
   "Copy version": "复制版本",
@@ -358,6 +361,7 @@
   "Delete all drafts": "删除所有草稿",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "删除草稿",
@@ -413,7 +417,6 @@
   "Domain": "域名",
   "Don’t allow disposable email addresses": "不允许使用一次性电子邮箱地址",
   "Download": "下载",
-  "Download .zuliprc": "下载 .zuliprc",
   "Download botserverrc": "下载botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "以Zulip Botserver格式下载所有活动的外发webhook机器人的配置。",
   "Download file": "下载文件",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "教育(营利)",
   "Education (non-profit)": "教育(非营利)",
   "Effect": "作用",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "邮箱",
   "Email address": "邮箱地址",
   "Email address changes are disabled in this organization.": "本社群禁止更改电子邮箱地址。",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "图片",
   "In a meeting": "会议中",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "无效的机器人",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "管理此用户",
   "Manage user": "管理用户",
+  "Manage your API key": "",
   "March": "行进",
   "Mark all messages as read": "标记所有消息为已读",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "标记为已读",
   "Mark as resolved": "标记为已解决",
   "Mark as unread from here": "自此标记为未读",
@@ -722,6 +730,7 @@
   "Mentioned in": "提到",
   "Mentions": "被提及消息",
   "Menus": "菜单",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "在群聊 #{stream_name} 中发送消息",
   "Message #{stream_name} > {topic_name}": "在 #{stream_name} > {topic_name}  中发送消息",
   "Message actions": "消息动作",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "消息 {recipient_label}",
   "Message {recipient_names}": "消息 {recipient_names}",
   "Message {recipient_name} ({recipient_status})": "消息 {recipient_name} ({recipient_status})",
+  "Messages": "消息",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "永不过期",
   "New": "New",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "新电子邮箱",
   "New message": "新消息",
   "New option": "新选项",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "下一条未读话题",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "没有机器人能匹配当前的过滤器。",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "没有描述信息。",
   "No drafts selected": "",
   "No drafts.": "没有草稿",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "没有邀请匹配当前过滤器。",
   "No language set": "未设置语言",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "未设置链接器。",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "没有匹配的用户。",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "没有主题被标记为已解决。",
   "No topics match your current filter.": "无符合筛选的主题",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "没有用户组订阅。",
   "No user groups": "",
   "No user to subscribe.": "没有用户订阅。",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "非营利组织(注册)",
   "None": "没有",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "你维护的机器人也都将被禁用。",
   "Note that organizations are limited to five exports per week.": "请注意,社群每周只能导出五次。",
   "Nothing to preview": "没有预览",
@@ -932,6 +940,7 @@
   "Other permissions": "其他权限",
   "Other settings": "其他设置",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "病假中",
   "Outgoing webhook message format": "送出的webhook消息格式",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "频道消息中所需的主题",
   "Research": "研究",
   "Resend": "重新发送",
-  "Resend invitation": "重新发送邀请",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "发生错误。请刷新后再试",
+  "Reset to default notifications": "",
   "Reset zoom": "重置缩放",
   "Restore draft": "恢复草稿",
   "Restrict email domains of new users?": "限制新用户的电子邮箱域?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "搜索在主题或消息内容中。",
   "Search people": "搜索人员",
   "Search results": "搜索结果",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "查看如何设置电子邮箱",
   "Select a stream": "",
   "Select a stream below or change topic name.": "在下面选择一个频道或更改主题名称。",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "显示星标消息计数",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "显示/修改您的 API Key",
   "Showing messages since {time_string}.": "",
   "Sign up": "注册",
   "Silent mentions do not trigger notifications.": "无声提及不会触发通知。",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "频道描述不能包含换行字符。",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "这些用户的密码会被从系统中清除,他们的机器人用户也会被关闭。",
   "Theme": "主题",
+  "There are no bots.": "",
   "There are no current alert words.": "目前没有警示词。",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "星期四",
   "Time": "时间",
   "Time format": "时间格式",
@@ -1240,6 +1259,7 @@
   "Today": "今日",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "触发订阅",
   "Toggle the gear menu": "切换齿轮菜单",
   "Toggle topic mute": "切换主题静音",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip需要发送电子邮箱确认用户地址并发送通知",
   "Zulip needs your permission to enable desktop notifications.": "Zulip 需要您的许可启用桌面通知。",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "Zulip 的翻译由我们惊人的志愿者翻译社区贡献。如果您想提供帮助,请参阅Zulip 翻译指南.",
@@ -1541,6 +1561,9 @@
   "more topics": "更多话题",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",
diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po
index bab136fb98..d0ebcc76a9 100644
--- a/locale/zh_Hant/LC_MESSAGES/django.po
+++ b/locale/zh_Hant/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
 "Last-Translator: Ivan Lau , 2020\n"
 "Language-Team: Chinese Traditional (http://app.transifex.com/zulip/zulip/language/zh-Hant/)\n"
@@ -20,57 +20,51 @@ msgstr ""
 "Language: zh-Hant\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "不允許訪客使用者"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "無效組織"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "公開頻道"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "私人頻道"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "開始時間比完結時間更遲。開始:{start},完結:{end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "沒有可用分析數據。請聯繫您的伺服器管理員。"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr ""
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -79,7 +73,7 @@ msgid ""
 "users to join."
 msgstr ""
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -88,7 +82,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -97,7 +91,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -106,7 +100,7 @@ msgid ""
 "join."
 msgstr ""
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -115,11 +109,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -135,124 +129,124 @@ msgstr ""
 msgid "Invalid remote server."
 msgstr ""
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
 msgstr ""
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr ""
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "發生錯誤,請聯絡 {email} 。"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "發生錯誤,請重新整理此頁。"
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "發生錯誤,請稍後數秒再試。"
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
 msgstr ""
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
 msgstr ""
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr ""
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
 msgstr ""
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
 msgstr ""
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -260,54 +254,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr ""
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr ""
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -316,8 +317,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -422,7 +456,7 @@ msgstr "15日在線使用者"
 msgid "Total users"
 msgstr "總使用者"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "使用者"
 
@@ -562,36 +596,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr ""
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr ""
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "取消"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr ""
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -613,6 +743,451 @@ msgstr ""
 msgid "All"
 msgstr "全部"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -632,11 +1207,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -651,12 +1222,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "創建組織"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -689,51 +1260,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "聯絡支援"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr ""
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr ""
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -749,14 +1317,6 @@ msgstr "頭像"
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -804,7 +1364,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "註冊"
 
@@ -837,8 +1397,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "登入"
 
@@ -871,26 +1431,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "重新連線"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "訊息"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1113,21 +1669,21 @@ msgstr "訪客"
 msgid "Normal users"
 msgstr "一般使用者"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "關閉"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "更新"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2350,7 +2906,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2370,7 +2926,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2380,12 +2945,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr ""
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "尋找帳戶"
 
@@ -2417,7 +2982,7 @@ msgstr "應用整合"
 msgid "Desktop & mobile apps"
 msgstr ""
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "新的組織"
 
@@ -2785,12 +3350,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2799,11 +3360,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2972,6 +3528,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr ""
@@ -3129,123 +3701,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr ""
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
+msgid "{user} joined this organization."
 msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr ""
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr ""
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr ""
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr ""
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr ""
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3275,72 +3831,72 @@ msgstr ""
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr ""
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr ""
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr ""
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr ""
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr ""
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3359,137 +3915,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr ""
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr ""
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr ""
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr ""
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr ""
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr ""
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr ""
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr ""
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3498,38 +4059,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr ""
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr ""
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3543,7 +4104,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3553,187 +4114,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr ""
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr ""
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr ""
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr ""
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr ""
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr ""
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr ""
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr ""
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr ""
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr ""
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr ""
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr ""
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr ""
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "無法同時傳送到不同的頻道"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr ""
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr ""
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr ""
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr ""
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr ""
 
@@ -3790,88 +4351,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr ""
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr ""
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr ""
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr ""
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr ""
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr ""
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr ""
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr ""
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr ""
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr ""
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr ""
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr ""
 
@@ -3879,119 +4440,119 @@ msgstr ""
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr ""
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr ""
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr ""
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr ""
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr ""
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr ""
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -3999,47 +4560,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr ""
 
@@ -4137,106 +4698,106 @@ msgstr ""
 msgid "Version control"
 msgstr ""
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr ""
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr ""
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr ""
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr ""
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr ""
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4245,119 +4806,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr ""
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr ""
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr ""
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr ""
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4371,45 +4932,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4421,23 +4982,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr ""
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4457,21 +5018,21 @@ msgstr ""
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4508,7 +5069,7 @@ msgstr ""
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4522,7 +5083,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4531,7 +5092,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4563,28 +5124,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr ""
@@ -4595,18 +5156,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr ""
@@ -4616,24 +5177,24 @@ msgstr ""
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr ""
@@ -4643,8 +5204,8 @@ msgstr ""
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr ""
@@ -4663,21 +5224,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr ""
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4734,161 +5295,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr ""
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr ""
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr ""
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr ""
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr ""
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr ""
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr ""
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr ""
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr ""
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr ""
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr ""
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr ""
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr ""
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr ""
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr ""
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr ""
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr ""
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr ""
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr ""
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr ""
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr ""
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr ""
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr ""
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4922,215 +5483,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr ""
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr ""
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr ""
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr ""
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr ""
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr ""
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "公開"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr ""
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr ""
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr ""
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr ""
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "自訂表情"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr ""
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr ""
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr ""
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr ""
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "自訂表情"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr ""
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr ""
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "公開"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr ""
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr ""
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr ""
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr ""
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr ""
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr ""
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr ""
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr ""
@@ -5143,20 +5700,20 @@ msgstr ""
 msgid "An unknown browser"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5194,41 +5751,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5279,7 +5836,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5328,19 +5885,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr ""
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr ""
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr ""
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5356,42 +5913,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr ""
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr ""
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5406,55 +5967,55 @@ msgstr ""
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5488,7 +6049,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr ""
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5516,71 +6077,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr ""
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr ""
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "已有頻道使用此名稱"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr ""
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr ""
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr ""
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr ""
 
-#: zerver/views/streams.py:772
-#, python-brace-format
-msgid "{user_name} created the following streams: {stream_str}."
-msgstr ""
-
 #: zerver/views/streams.py:774
 #, python-brace-format
+msgid "{user_name} created the following streams: {stream_str}."
+msgstr ""
+
+#: zerver/views/streams.py:776
+#, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr ""
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr ""
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5589,7 +6150,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr ""
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5613,112 +6174,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr ""
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr ""
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr ""
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr ""
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr ""
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr ""
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr ""
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr ""
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr ""
 
@@ -5779,43 +6340,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr ""
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr ""
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr ""
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr ""
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5848,11 +6409,11 @@ msgstr ""
 msgid "Unknown webhook request"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr ""
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr ""
 
@@ -5879,7 +6440,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5896,83 +6457,105 @@ msgstr ""
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr ""
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr ""
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr ""
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr ""
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr ""
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr ""
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr ""
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr ""
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr ""
diff --git a/locale/zh_Hant/translations.json b/locale/zh_Hant/translations.json
index 85e820cf55..fb1d0ebd62 100644
--- a/locale/zh_Hant/translations.json
+++ b/locale/zh_Hant/translations.json
@@ -3,16 +3,15 @@
   "(attached file)": "",
   "(forever)": "",
   "(hidden)": "",
-  "(no description)": "",
   "(no topic)": "",
   "(or )": "",
   "(you)": "",
   "({message_retention_days} days)": "",
   "/dark (Switch to the dark theme)": "",
   "/light (Switch to light theme)": "",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "",
   "1 hour": "",
   "1 week": "",
@@ -28,7 +27,7 @@
   "6 hours": "",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "",
   "Add GIF": "",
+  "Add a description": "",
   "Add a new alert word": "",
   "Add a new bot": "",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "",
   "Bot email": "",
   "Bot email (a-z, 0-9, and dashes only)": "",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "",
   "Bots": "機器人",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "",
   "Configure the default streams new users are subscribed to when joining your organization.": "",
   "Confirm": "",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "",
@@ -413,7 +417,6 @@
   "Domain": "",
   "Don’t allow disposable email addresses": "",
   "Download": "下載",
-  "Download .zuliprc": "",
   "Download botserverrc": "",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "",
   "Download file": "下載檔案",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "信箱",
   "Email address": "",
   "Email address changes are disabled in this organization.": "",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "",
   "In a meeting": "",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "",
   "Mark all messages as read": "",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "標記爲已讀",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "",
   "Mentions": "",
   "Menus": "",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "訊息動作",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "訊息",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "",
   "New message": "新訊息",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "下一個未讀主題",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "",
   "No drafts selected": "",
   "No drafts.": "",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "",
   "No language set": "",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "",
   "Note that organizations are limited to five exports per week.": "",
   "Nothing to preview": "",
@@ -932,6 +940,7 @@
   "Other permissions": "",
   "Other settings": "",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "",
   "Research": "",
   "Resend": "",
-  "Resend invitation": "",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "",
   "Restrict email domains of new users?": "",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "搜尋用戶",
   "Search results": "",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "查看如何設定電子郵件。",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "",
   "Showing messages since {time_string}.": "",
   "Sign up": "註冊",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "",
   "Time": "",
   "Time format": "",
@@ -1240,6 +1259,7 @@
   "Today": "",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "",
   "Toggle the gear menu": "",
   "Toggle topic mute": "",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip需要傳送電子郵件以確認使用者之電郵地址及傳送通知。",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",
diff --git a/locale/zh_TW/LC_MESSAGES/django.po b/locale/zh_TW/LC_MESSAGES/django.po
index 75a51de62a..acaee6d8be 100644
--- a/locale/zh_TW/LC_MESSAGES/django.po
+++ b/locale/zh_TW/LC_MESSAGES/django.po
@@ -3,6 +3,7 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
+# Brian Chang , 2024
 # Charle Chang , 2019
 # jeff lin , 2020
 # Leon H., 2020
@@ -13,9 +14,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Zulip\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-14 20:29+0000\n"
+"POT-Creation-Date: 2024-02-23 21:12+0000\n"
 "PO-Revision-Date: 2015-12-06 00:18+0000\n"
-"Last-Translator: Tim Abbott , 2021-2022\n"
+"Last-Translator: Brian Chang , 2024\n"
 "Language-Team: Chinese (Taiwan) (http://app.transifex.com/zulip/zulip/language/zh_TW/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -23,57 +24,51 @@ msgstr ""
 "Language: zh_TW\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: analytics/views/stats.py:112 zerver/decorator.py:630
-#: zerver/decorator.py:648
+#: analytics/views/stats.py:110 zerver/decorator.py:645
+#: zerver/decorator.py:663
 msgid "Not allowed for guest users"
 msgstr "訪客不允許"
 
-#: analytics/views/stats.py:155
+#: analytics/views/stats.py:153
 msgid "Invalid organization"
 msgstr "無效的組織"
 
-#: analytics/views/stats.py:317
+#: analytics/views/stats.py:313
 msgid "Public streams"
 msgstr "公開串流"
 
-#: analytics/views/stats.py:318
+#: analytics/views/stats.py:314
 msgid "Private streams"
 msgstr "私人串流"
 
-#: analytics/views/stats.py:319
+#: analytics/views/stats.py:315
 msgid "Direct messages"
-msgstr ""
+msgstr "私訊"
 
-#: analytics/views/stats.py:320
+#: analytics/views/stats.py:316
 msgid "Group direct messages"
 msgstr ""
 
-#: analytics/views/stats.py:343
+#: analytics/views/stats.py:339
 #, python-brace-format
 msgid "Missing stream for chart: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:351
+#: analytics/views/stats.py:347
 #, python-brace-format
 msgid "Unknown chart name: {chart_name}"
 msgstr ""
 
-#: analytics/views/stats.py:361
+#: analytics/views/stats.py:357
 #, python-brace-format
 msgid "Start time is later than end time. Start: {start}, End: {end}"
 msgstr "開始時間晚於結束時間。開始時間:{start}、結束時間:{end}"
 
-#: analytics/views/stats.py:383 analytics/views/stats.py:418
+#: analytics/views/stats.py:379 analytics/views/stats.py:416
 msgid "No analytics data available. Please contact your server administrator."
 msgstr "沒有分析資料。請聯繫您的伺服器管理員。"
 
-#: analytics/views/support.py:188 analytics/views/support.py:427
-#: zerver/views/streams.py:291 zerver/views/streams.py:295
-#: zerver/views/streams.py:303
-msgid "Invalid parameters"
-msgstr "無效參數"
-
-#: corporate/lib/registration.py:29
+#: corporate/lib/registration.py:30
 #, python-brace-format
 msgid ""
 "Your organization has no Zulip licenses remaining and can no longer accept "
@@ -82,7 +77,7 @@ msgid ""
 "users to join."
 msgstr "您的社群沒有剩餘的 Zulip 許可證,並且不能再接受新用戶。請[增加許可數量]({billing_page_link}) 或[停用非活動用戶]({deactivate_user_help_page_link}) 以允許新用戶加入。"
 
-#: corporate/lib/registration.py:36
+#: corporate/lib/registration.py:37
 #, python-brace-format
 msgid ""
 "Your organization has only one Zulip license remaining. You can [increase "
@@ -91,7 +86,7 @@ msgid ""
 "join."
 msgstr "您的社群只剩下一個 Zulip 許可證。您可以 [增加許可證數量]({billing_page_link}) 或 [停用非活動用戶]({deactivate_user_help_page_link}) 以允許多個用戶加入。"
 
-#: corporate/lib/registration.py:41
+#: corporate/lib/registration.py:42
 #, python-brace-format
 msgid ""
 "Your organization has only two Zulip licenses remaining. You can [increase "
@@ -100,7 +95,7 @@ msgid ""
 "join."
 msgstr "您的社群只剩下兩個 Zulip 許可證。您可以 [增加許可證數量]({billing_page_link}) 或 [停用非活動用戶]({deactivate_user_help_page_link}) 以允許兩個以上的用戶加入。"
 
-#: corporate/lib/registration.py:46
+#: corporate/lib/registration.py:47
 #, python-brace-format
 msgid ""
 "Your organization has only three Zulip licenses remaining. You can [increase"
@@ -109,7 +104,7 @@ msgid ""
 "join."
 msgstr "您的社群只剩下三個 Zulip 許可證。您可以 [增加許可證數量]({billing_page_link}) 或 [停用非活動用戶]({deactivate_user_help_page_link}) 以允許兩個以上的用戶加入。"
 
-#: corporate/lib/registration.py:57
+#: corporate/lib/registration.py:58
 #, python-brace-format
 msgid ""
 "A new member ({email}) was unable to join your organization because all "
@@ -118,11 +113,11 @@ msgid ""
 "users]({deactivate_user_help_page_link}) to allow new members to join."
 msgstr ""
 
-#: corporate/lib/registration.py:109
+#: corporate/lib/registration.py:110
 msgid "All Zulip licenses for this organization are currently in use."
 msgstr ""
 
-#: corporate/lib/registration.py:112
+#: corporate/lib/registration.py:113
 #, python-brace-format
 msgid ""
 "Your organization does not have enough unused Zulip licenses to invite "
@@ -136,126 +131,126 @@ msgstr ""
 
 #: corporate/lib/remote_billing_util.py:166
 msgid "Invalid remote server."
-msgstr ""
+msgstr "遠端伺服器失效"
 
-#: corporate/lib/stripe.py:204
+#: corporate/lib/stripe.py:217
 #, python-brace-format
 msgid ""
 "You must purchase licenses for all active users in your organization "
 "(minimum {min_licenses})."
 msgstr ""
 
-#: corporate/lib/stripe.py:210
+#: corporate/lib/stripe.py:223
 #, python-brace-format
 msgid ""
 "Invoices with more than {max_licenses} licenses can't be processed from this"
 " page. To complete the upgrade, please contact {email}."
 msgstr ""
 
-#: corporate/lib/stripe.py:352
+#: corporate/lib/stripe.py:365
 msgid "No payment method on file."
-msgstr ""
+msgstr "沒有任何付款方式"
 
-#: corporate/lib/stripe.py:360
+#: corporate/lib/stripe.py:373
 #, python-brace-format
 msgid "{brand} ending in {last4}"
 msgstr "{brand} 的末四碼為 {last4}"
 
-#: corporate/lib/stripe.py:368
+#: corporate/lib/stripe.py:381
 #, python-brace-format
 msgid "Unknown payment method. Please contact {email}."
 msgstr "未知的付款方式。請聯繫 {email}."
 
-#: corporate/lib/stripe.py:384
+#: corporate/lib/stripe.py:414
 #, python-brace-format
 msgid "Something went wrong. Please contact {email}."
 msgstr "付款失敗,請聯絡 {email}"
 
-#: corporate/lib/stripe.py:385
+#: corporate/lib/stripe.py:415
 msgid "Something went wrong. Please reload the page."
 msgstr "發生錯誤。請重新更新頁面。"
 
-#: corporate/lib/stripe.py:476
+#: corporate/lib/stripe.py:512
 msgid "Something went wrong. Please wait a few seconds and try again."
 msgstr "發生錯誤。請稍待數秒後再試一次。"
 
-#: corporate/lib/stripe.py:1226
+#: corporate/lib/stripe.py:1684
 msgid "Please add a credit card before starting your free trial."
-msgstr ""
+msgstr "請增加信用卡付款已獲取免費模式"
 
-#: corporate/lib/stripe.py:1247
+#: corporate/lib/stripe.py:1706
 msgid "Please add a credit card to schedule upgrade."
-msgstr ""
+msgstr "請增加信用卡付款已升級"
 
-#: corporate/lib/stripe.py:1995
+#: corporate/lib/stripe.py:2572
 msgid ""
 "Unable to update the plan. The plan has been expired and replaced with a new"
 " plan."
 msgstr "無法更新方案。該方案已經過期並由新方案取代。"
 
-#: corporate/lib/stripe.py:2000
+#: corporate/lib/stripe.py:2577
 msgid "Unable to update the plan. The plan has ended."
 msgstr "無法更新方案。該方案已經結束。"
 
-#: corporate/lib/stripe.py:2055
+#: corporate/lib/stripe.py:2632
 msgid ""
 "Cannot update licenses in the current billing period for free trial plan."
-msgstr ""
+msgstr "無法在目前計費週期內更新免費試用計畫的許可證"
 
-#: corporate/lib/stripe.py:2060 corporate/lib/stripe.py:2088
+#: corporate/lib/stripe.py:2637 corporate/lib/stripe.py:2665
 msgid ""
 "Unable to update licenses manually. Your plan is on automatic license "
 "management."
-msgstr ""
+msgstr "無法手動更新許可證。您的計劃是自動許可證管理"
 
-#: corporate/lib/stripe.py:2066
+#: corporate/lib/stripe.py:2643
 #, python-brace-format
 msgid ""
 "Your plan is already on {licenses} licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2071
+#: corporate/lib/stripe.py:2648
 msgid "You cannot decrease the licenses in the current billing period."
 msgstr ""
 
-#: corporate/lib/stripe.py:2097
+#: corporate/lib/stripe.py:2674
 msgid ""
 "Cannot change the licenses for next billing cycle for a plan that is being "
 "downgraded."
 msgstr ""
 
-#: corporate/lib/stripe.py:2103
+#: corporate/lib/stripe.py:2680
 #, python-brace-format
 msgid ""
 "Your plan is already scheduled to renew with {licenses_at_next_renewal} "
 "licenses."
 msgstr ""
 
-#: corporate/lib/stripe.py:2118
+#: corporate/lib/stripe.py:2695
 msgid "Nothing to change."
 msgstr ""
 
-#: corporate/lib/stripe.py:2323
+#: corporate/lib/stripe.py:2931
 msgid "No customer for this organization!"
 msgstr ""
 
-#: corporate/lib/stripe.py:2332
+#: corporate/lib/stripe.py:2940
 msgid "Session not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2338 zerver/decorator.py:197
+#: corporate/lib/stripe.py:2946 zerver/decorator.py:200
 msgid "Must be a billing administrator or an organization owner"
 msgstr ""
 
-#: corporate/lib/stripe.py:2349
+#: corporate/lib/stripe.py:2957
 msgid "Payment intent not found"
 msgstr ""
 
-#: corporate/lib/stripe.py:2352
-msgid "Pass stripe_session_id or stripe_payment_intent_id"
+#: corporate/lib/stripe.py:2960
+msgid "Pass stripe_session_id or stripe_invoice_id"
 msgstr ""
 
-#: corporate/lib/stripe.py:2891
+#: corporate/lib/stripe.py:3609
 #, python-brace-format
 msgid ""
 "Your organization's request for sponsored hosting has been approved! You have been upgraded to {plan_name}, free of charge. {emoji}\n"
@@ -263,54 +258,61 @@ msgid ""
 "If you could {begin_link}list Zulip as a sponsor on your website{end_link}, we would really appreciate it!"
 msgstr ""
 
-#: corporate/views/billing_page.py:328
+#: corporate/views/billing_page.py:329
 msgid "Parameter 'confirmed' is required"
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:130
+#: corporate/views/remote_billing_page.py:139
 msgid "Billing access token expired."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:132
+#: corporate/views/remote_billing_page.py:141
 msgid "Invalid billing access token."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:256
+#: corporate/views/remote_billing_page.py:217
+msgid ""
+"Failed to migrate customer from server to realms. Please contact support for"
+" assistance."
+msgstr ""
+
+#: corporate/views/remote_billing_page.py:297
 msgid "User account doesn't exist yet."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:261
-#: corporate/views/remote_billing_page.py:659
+#: corporate/views/remote_billing_page.py:302
+#: corporate/views/remote_billing_page.py:730
 msgid "You must accept the Terms of Service to proceed."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:487
+#: corporate/views/remote_billing_page.py:540
 msgid ""
 "This zulip_org_id is not registered with Zulip's billing management system."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:494
+#: corporate/views/remote_billing_page.py:547
 msgid "Invalid zulip_org_key for this zulip_org_id."
 msgstr ""
 
-#: corporate/views/remote_billing_page.py:498
+#: corporate/views/remote_billing_page.py:551
 msgid "Your server registration has been deactivated."
 msgstr ""
 
-#: templates/404.html:4
-#: templates/zilencer/remote_realm_server_mismatch_error.html:4
+#: corporate/views/support.py:273 zerver/views/streams.py:293
+#: zerver/views/streams.py:297 zerver/views/streams.py:305
+msgid "Invalid parameters"
+msgstr "無效參數"
+
+#: templates/404.html:4 templates/4xx.html:4
+#: templates/zerver/remote_realm_server_mismatch_error.html:4
 msgid "Error"
 msgstr "錯誤"
 
-#: templates/404.html:17
-msgid "Method not allowed (405)"
-msgstr ""
-
-#: templates/404.html:19
+#: templates/404.html:16
 msgid "Page not found (404)"
 msgstr ""
 
-#: templates/404.html:22
+#: templates/404.html:18 templates/4xx.html:42
 #, python-format
 msgid ""
 "\n"
@@ -319,8 +321,41 @@ msgid ""
 "                        "
 msgstr ""
 
+#: templates/4xx.html:16
+msgid "Access forbidden (403)"
+msgstr ""
+
+#: templates/4xx.html:18
+msgid ""
+"\n"
+"                        Your request could not be completed because your\n"
+"                        browser did not send the credentials required to authenticate\n"
+"                        your access. To resolve this issue:\n"
+"                        "
+msgstr ""
+
+#: templates/4xx.html:27
+msgid ""
+"\n"
+"                            Make sure that your browser allows cookies for this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:32
+msgid ""
+"\n"
+"                            Check for any browser privacy settings or extensions\n"
+"                            that block Referer headers, and disable them for\n"
+"                            this site.\n"
+"                            "
+msgstr ""
+
+#: templates/4xx.html:40
+msgid "Method not allowed (405)"
+msgstr ""
+
 #: templates/500.html:4 templates/500.html:21
-#: zerver/actions/scheduled_messages.py:401 zerver/middleware.py:393
+#: zerver/actions/scheduled_messages.py:396 zerver/middleware.py:393
 msgid "Internal server error"
 msgstr ""
 
@@ -425,7 +460,7 @@ msgstr "15 天活躍"
 msgid "Total users"
 msgstr "使用者總數"
 
-#: templates/analytics/stats.html:50
+#: templates/analytics/stats.html:50 zerver/models/custom_profile_fields.py:97
 msgid "Users"
 msgstr "使用者"
 
@@ -565,36 +600,132 @@ msgid ""
 "encountering this page, it's probably our fault. We're sorry."
 msgstr "請確認您正確地將連結複製貼上於瀏覽器上。若您仍看見此頁面,可能是我們的問題,很抱歉。"
 
-#: templates/corporate/billing.html:5
+#: templates/corporate/billing/billing.html:5
 msgid "Billing"
 msgstr "帳單"
 
-#: templates/corporate/billing.html:312 templates/corporate/billing.html:338
-#: templates/corporate/billing.html:367 templates/corporate/billing.html:396
-#: templates/corporate/billing.html:422
+#: templates/corporate/billing/billing.html:373
+#: templates/corporate/billing/billing.html:408
+#: templates/corporate/billing/billing.html:437
+#: templates/corporate/billing/billing.html:466
+#: templates/corporate/billing/billing.html:492
+#: templates/corporate/billing/billing.html:520
 #: templates/zerver/change_email_address_visibility_modal.html:8
-#: templates/zerver/development/email_log.html:36
+#: templates/zerver/development/email_log.html:33
 msgid "Close modal"
 msgstr ""
 
-#: templates/corporate/billing.html:323 templates/corporate/billing.html:352
-#: templates/corporate/billing.html:381
+#: templates/corporate/billing/billing.html:393
+#: templates/corporate/billing/billing.html:477
+#: templates/corporate/billing/billing.html:505
+#: templates/corporate/billing/billing.html:533
+msgid "Never mind"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:395
+#: templates/corporate/billing/billing.html:479
+#: templates/corporate/billing/billing.html:507
+msgid "Downgrade"
+msgstr ""
+
+#: templates/corporate/billing/billing.html:422
+#: templates/corporate/billing/billing.html:451
 #: templates/zerver/change_email_address_visibility_modal.html:26
 msgid "Cancel"
 msgstr "取消"
 
-#: templates/corporate/billing.html:325 templates/corporate/billing.html:409
-#: templates/corporate/billing.html:432
-msgid "Downgrade"
-msgstr ""
-
-#: templates/corporate/billing.html:354 templates/corporate/billing.html:383
+#: templates/corporate/billing/billing.html:424
+#: templates/corporate/billing/billing.html:453
 #: templates/zerver/change_email_address_visibility_modal.html:28
 msgid "Confirm"
 msgstr "確認"
 
-#: templates/corporate/billing.html:407 templates/corporate/billing.html:430
-msgid "Never mind"
+#: templates/corporate/billing/billing.html:535
+msgid "Cancel upgrade"
+msgstr ""
+
+#: templates/corporate/billing/event_status.html:5
+msgid "Billing status"
+msgstr ""
+
+#: templates/corporate/billing/remote_billing_server_deactivate.html:5
+msgid "Deactivate server registration?"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:4
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:16
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:4
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:16
+msgid "Plan management not available"
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:18
+#, python-format
+msgid ""
+" Plan management is not available for this\n"
+"                        organization, because your Zulip server is already on a\n"
+"                        %(server_plan_name)s plan, which covers all\n"
+"                        organizations on this server. Follow the log\n"
+"                        in instructions\n"
+"                        for All older versions\n"
+"                        of the Zulip server to manage your plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_realm_login_error_for_server_on_active_plan.html:29
+msgid ""
+" To move the plan from the server to this\n"
+"                        organization, or for other questions, contact support.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:18
+msgid ""
+"\n"
+"                        Plan management for this server is not available because at least one organization\n"
+"                        hosted on this server already has an active plan.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_login_error_for_any_realm_on_active_plan.html:24
+#, python-format
+msgid ""
+"\n"
+"                        Log in to plan management for your\n"
+"                        organization instead, or contact support with any questions.\n"
+"                        "
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:4
+#: templates/zerver/rate_limit_exceeded.html:4
+msgid "Rate limit exceeded"
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:15
+#: templates/zerver/rate_limit_exceeded.html:15
+msgid "Rate limit exceeded."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:17
+msgid ""
+"Your server has exceeded the limit for how\n"
+"                        often this action can be performed."
+msgstr ""
+
+#: templates/corporate/billing/remote_server_rate_limit_exceeded.html:19
+#: templates/zerver/rate_limit_exceeded.html:19
+#, python-format
+msgid "You can try again in %(retry_after)s seconds."
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:5
+msgid "Upgrade"
+msgstr ""
+
+#: templates/corporate/billing/upgrade.html:238
+msgid "Convert demo organization before upgrading."
 msgstr ""
 
 #: templates/corporate/communities.html:28
@@ -616,6 +747,451 @@ msgstr "類別"
 msgid "All"
 msgstr "全部"
 
+#: templates/corporate/comparison_table_integrated.html:103
+msgid "10,000 messages"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:107
+#: templates/corporate/comparison_table_integrated.html:108
+#: templates/corporate/comparison_table_integrated.html:109
+#: templates/corporate/comparison_table_integrated.html:110
+#: templates/corporate/comparison_table_integrated.html:118
+#: templates/corporate/comparison_table_integrated.html:119
+#: templates/corporate/comparison_table_integrated.html:120
+#: templates/corporate/comparison_table_integrated.html:121
+#: templates/corporate/comparison_table_integrated.html:131
+#: templates/corporate/comparison_table_integrated.html:132
+#: templates/corporate/comparison_table_integrated.html:133
+#: templates/corporate/comparison_table_integrated.html:134
+#: templates/corporate/comparison_table_integrated.html:144
+#: templates/corporate/comparison_table_integrated.html:145
+#: templates/corporate/comparison_table_integrated.html:146
+#: templates/corporate/comparison_table_integrated.html:147
+#: templates/corporate/comparison_table_integrated.html:157
+#: templates/corporate/comparison_table_integrated.html:158
+#: templates/corporate/comparison_table_integrated.html:159
+#: templates/corporate/comparison_table_integrated.html:160
+#: templates/corporate/comparison_table_integrated.html:171
+#: templates/corporate/comparison_table_integrated.html:172
+#: templates/corporate/comparison_table_integrated.html:173
+#: templates/corporate/comparison_table_integrated.html:174
+#: templates/corporate/comparison_table_integrated.html:185
+#: templates/corporate/comparison_table_integrated.html:186
+#: templates/corporate/comparison_table_integrated.html:187
+#: templates/corporate/comparison_table_integrated.html:188
+#: templates/corporate/comparison_table_integrated.html:198
+#: templates/corporate/comparison_table_integrated.html:199
+#: templates/corporate/comparison_table_integrated.html:200
+#: templates/corporate/comparison_table_integrated.html:201
+#: templates/corporate/comparison_table_integrated.html:283
+#: templates/corporate/comparison_table_integrated.html:284
+#: templates/corporate/comparison_table_integrated.html:285
+msgid "Unlimited"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:211
+#: templates/corporate/comparison_table_integrated.html:212
+#: templates/corporate/comparison_table_integrated.html:213
+#: templates/corporate/comparison_table_integrated.html:214
+#: templates/corporate/comparison_table_integrated.html:231
+#: templates/corporate/comparison_table_integrated.html:232
+#: templates/corporate/comparison_table_integrated.html:233
+#: templates/corporate/comparison_table_integrated.html:245
+#: templates/corporate/comparison_table_integrated.html:246
+#: templates/corporate/comparison_table_integrated.html:247
+#: templates/corporate/comparison_table_integrated.html:259
+#: templates/corporate/comparison_table_integrated.html:260
+#: templates/corporate/comparison_table_integrated.html:261
+#: templates/corporate/comparison_table_integrated.html:272
+#: templates/corporate/comparison_table_integrated.html:301
+#: templates/corporate/comparison_table_integrated.html:302
+#: templates/corporate/comparison_table_integrated.html:303
+#: templates/corporate/comparison_table_integrated.html:304
+#: templates/corporate/comparison_table_integrated.html:315
+#: templates/corporate/comparison_table_integrated.html:316
+#: templates/corporate/comparison_table_integrated.html:317
+#: templates/corporate/comparison_table_integrated.html:318
+#: templates/corporate/comparison_table_integrated.html:328
+#: templates/corporate/comparison_table_integrated.html:329
+#: templates/corporate/comparison_table_integrated.html:330
+#: templates/corporate/comparison_table_integrated.html:331
+#: templates/corporate/comparison_table_integrated.html:343
+#: templates/corporate/comparison_table_integrated.html:344
+#: templates/corporate/comparison_table_integrated.html:345
+#: templates/corporate/comparison_table_integrated.html:346
+#: templates/corporate/comparison_table_integrated.html:357
+#: templates/corporate/comparison_table_integrated.html:358
+#: templates/corporate/comparison_table_integrated.html:359
+#: templates/corporate/comparison_table_integrated.html:360
+#: templates/corporate/comparison_table_integrated.html:370
+#: templates/corporate/comparison_table_integrated.html:371
+#: templates/corporate/comparison_table_integrated.html:372
+#: templates/corporate/comparison_table_integrated.html:373
+#: templates/corporate/comparison_table_integrated.html:383
+#: templates/corporate/comparison_table_integrated.html:384
+#: templates/corporate/comparison_table_integrated.html:385
+#: templates/corporate/comparison_table_integrated.html:386
+#: templates/corporate/comparison_table_integrated.html:394
+#: templates/corporate/comparison_table_integrated.html:395
+#: templates/corporate/comparison_table_integrated.html:396
+#: templates/corporate/comparison_table_integrated.html:397
+#: templates/corporate/comparison_table_integrated.html:407
+#: templates/corporate/comparison_table_integrated.html:408
+#: templates/corporate/comparison_table_integrated.html:409
+#: templates/corporate/comparison_table_integrated.html:410
+#: templates/corporate/comparison_table_integrated.html:420
+#: templates/corporate/comparison_table_integrated.html:421
+#: templates/corporate/comparison_table_integrated.html:422
+#: templates/corporate/comparison_table_integrated.html:423
+#: templates/corporate/comparison_table_integrated.html:434
+#: templates/corporate/comparison_table_integrated.html:435
+#: templates/corporate/comparison_table_integrated.html:436
+#: templates/corporate/comparison_table_integrated.html:437
+#: templates/corporate/comparison_table_integrated.html:449
+#: templates/corporate/comparison_table_integrated.html:450
+#: templates/corporate/comparison_table_integrated.html:451
+#: templates/corporate/comparison_table_integrated.html:452
+#: templates/corporate/comparison_table_integrated.html:463
+#: templates/corporate/comparison_table_integrated.html:464
+#: templates/corporate/comparison_table_integrated.html:465
+#: templates/corporate/comparison_table_integrated.html:476
+#: templates/corporate/comparison_table_integrated.html:477
+#: templates/corporate/comparison_table_integrated.html:478
+#: templates/corporate/comparison_table_integrated.html:490
+#: templates/corporate/comparison_table_integrated.html:491
+#: templates/corporate/comparison_table_integrated.html:492
+#: templates/corporate/comparison_table_integrated.html:511
+#: templates/corporate/comparison_table_integrated.html:512
+#: templates/corporate/comparison_table_integrated.html:513
+#: templates/corporate/comparison_table_integrated.html:524
+#: templates/corporate/comparison_table_integrated.html:525
+#: templates/corporate/comparison_table_integrated.html:526
+#: templates/corporate/comparison_table_integrated.html:537
+#: templates/corporate/comparison_table_integrated.html:538
+#: templates/corporate/comparison_table_integrated.html:539
+#: templates/corporate/comparison_table_integrated.html:551
+#: templates/corporate/comparison_table_integrated.html:552
+#: templates/corporate/comparison_table_integrated.html:553
+#: templates/corporate/comparison_table_integrated.html:566
+#: templates/corporate/comparison_table_integrated.html:567
+#: templates/corporate/comparison_table_integrated.html:568
+#: templates/corporate/comparison_table_integrated.html:582
+#: templates/corporate/comparison_table_integrated.html:583
+#: templates/corporate/comparison_table_integrated.html:597
+#: templates/corporate/comparison_table_integrated.html:598
+#: templates/corporate/comparison_table_integrated.html:613
+#: templates/corporate/comparison_table_integrated.html:614
+#: templates/corporate/comparison_table_integrated.html:626
+#: templates/corporate/comparison_table_integrated.html:627
+#: templates/corporate/comparison_table_integrated.html:638
+#: templates/corporate/comparison_table_integrated.html:653
+#: templates/corporate/comparison_table_integrated.html:654
+#: templates/corporate/comparison_table_integrated.html:655
+#: templates/corporate/comparison_table_integrated.html:656
+#: templates/corporate/comparison_table_integrated.html:666
+#: templates/corporate/comparison_table_integrated.html:667
+#: templates/corporate/comparison_table_integrated.html:668
+#: templates/corporate/comparison_table_integrated.html:669
+#: templates/corporate/comparison_table_integrated.html:681
+#: templates/corporate/comparison_table_integrated.html:682
+#: templates/corporate/comparison_table_integrated.html:683
+#: templates/corporate/comparison_table_integrated.html:694
+#: templates/corporate/comparison_table_integrated.html:695
+#: templates/corporate/comparison_table_integrated.html:696
+#: templates/corporate/comparison_table_integrated.html:709
+#: templates/corporate/comparison_table_integrated.html:710
+#: templates/corporate/comparison_table_integrated.html:722
+#: templates/corporate/comparison_table_integrated.html:723
+#: templates/corporate/comparison_table_integrated.html:740
+#: templates/corporate/comparison_table_integrated.html:757
+#: templates/corporate/comparison_table_integrated.html:771
+#: templates/corporate/comparison_table_integrated.html:772
+#: templates/corporate/comparison_table_integrated.html:787
+#: templates/corporate/comparison_table_integrated.html:798
+#: templates/corporate/comparison_table_integrated.html:808
+#: templates/corporate/comparison_table_integrated.html:809
+#: templates/corporate/comparison_table_integrated.html:820
+#: templates/corporate/comparison_table_integrated.html:821
+#: templates/corporate/comparison_table_integrated.html:822
+#: templates/corporate/comparison_table_integrated.html:833
+#: templates/corporate/comparison_table_integrated.html:834
+#: templates/corporate/comparison_table_integrated.html:835
+#: templates/corporate/comparison_table_integrated.html:847
+#: templates/corporate/comparison_table_integrated.html:848
+#: templates/corporate/comparison_table_integrated.html:864
+#: templates/corporate/comparison_table_integrated.html:865
+#: templates/corporate/comparison_table_integrated.html:866
+#: templates/corporate/comparison_table_integrated.html:877
+#: templates/corporate/comparison_table_integrated.html:878
+#: templates/corporate/comparison_table_integrated.html:879
+#: templates/corporate/comparison_table_integrated.html:890
+#: templates/corporate/comparison_table_integrated.html:891
+#: templates/corporate/comparison_table_integrated.html:892
+#: templates/corporate/comparison_table_integrated.html:910
+#: templates/corporate/comparison_table_integrated.html:911
+#: templates/corporate/comparison_table_integrated.html:912
+#: templates/corporate/comparison_table_integrated.html:925
+#: templates/corporate/comparison_table_integrated.html:926
+#: templates/corporate/comparison_table_integrated.html:927
+#: templates/corporate/comparison_table_integrated.html:940
+#: templates/corporate/comparison_table_integrated.html:941
+#: templates/corporate/comparison_table_integrated.html:942
+#: templates/corporate/comparison_table_integrated.html:953
+#: templates/corporate/comparison_table_integrated.html:954
+#: templates/corporate/comparison_table_integrated.html:955
+#: templates/corporate/comparison_table_integrated.html:966
+#: templates/corporate/comparison_table_integrated.html:967
+#: templates/corporate/comparison_table_integrated.html:968
+#: templates/corporate/comparison_table_integrated.html:979
+#: templates/corporate/comparison_table_integrated.html:980
+#: templates/corporate/comparison_table_integrated.html:981
+#: templates/corporate/comparison_table_integrated.html:993
+#: templates/corporate/comparison_table_integrated.html:994
+#: templates/corporate/comparison_table_integrated.html:1004
+#: templates/corporate/comparison_table_integrated.html:1005
+#: templates/corporate/comparison_table_integrated.html:1006
+#: templates/corporate/comparison_table_integrated.html:1007
+#: templates/corporate/comparison_table_integrated.html:1022
+#: templates/corporate/comparison_table_integrated.html:1023
+#: templates/corporate/comparison_table_integrated.html:1024
+#: templates/corporate/comparison_table_integrated.html:1025
+#: templates/corporate/comparison_table_integrated.html:1037
+#: templates/corporate/comparison_table_integrated.html:1038
+#: templates/corporate/comparison_table_integrated.html:1039
+#: templates/corporate/comparison_table_integrated.html:1040
+#: templates/corporate/comparison_table_integrated.html:1052
+#: templates/corporate/comparison_table_integrated.html:1053
+#: templates/corporate/comparison_table_integrated.html:1054
+#: templates/corporate/comparison_table_integrated.html:1055
+#: templates/corporate/comparison_table_integrated.html:1067
+#: templates/corporate/comparison_table_integrated.html:1068
+#: templates/corporate/comparison_table_integrated.html:1069
+#: templates/corporate/comparison_table_integrated.html:1070
+#: templates/corporate/comparison_table_integrated.html:1082
+#: templates/corporate/comparison_table_integrated.html:1083
+#: templates/corporate/comparison_table_integrated.html:1097
+#: templates/corporate/comparison_table_integrated.html:1098
+#: templates/corporate/comparison_table_integrated.html:1111
+#: templates/corporate/comparison_table_integrated.html:1112
+#: templates/corporate/comparison_table_integrated.html:1113
+#: templates/corporate/comparison_table_integrated.html:1124
+#: templates/corporate/comparison_table_integrated.html:1134
+#: templates/corporate/comparison_table_integrated.html:1135
+#: templates/corporate/comparison_table_integrated.html:1149
+#: templates/corporate/comparison_table_integrated.html:1150
+#: templates/corporate/comparison_table_integrated.html:1164
+#: templates/corporate/comparison_table_integrated.html:1165
+#: templates/corporate/comparison_table_integrated.html:1179
+#: templates/corporate/comparison_table_integrated.html:1180
+#: templates/corporate/comparison_table_integrated.html:1198
+#: templates/corporate/comparison_table_integrated.html:1199
+#: templates/corporate/comparison_table_integrated.html:1200
+#: templates/corporate/comparison_table_integrated.html:1211
+#: templates/corporate/comparison_table_integrated.html:1212
+#: templates/corporate/comparison_table_integrated.html:1213
+#: templates/corporate/comparison_table_integrated.html:1225
+#: templates/corporate/comparison_table_integrated.html:1226
+#: templates/corporate/comparison_table_integrated.html:1240
+#: templates/corporate/comparison_table_integrated.html:1241
+#: templates/corporate/comparison_table_integrated.html:1257
+#: templates/corporate/comparison_table_integrated.html:1258
+#: templates/corporate/comparison_table_integrated.html:1270
+#: templates/corporate/comparison_table_integrated.html:1271
+#: templates/corporate/comparison_table_integrated.html:1282
+#: templates/corporate/comparison_table_integrated.html:1293
+#: templates/corporate/comparison_table_integrated.html:1310
+#: templates/corporate/comparison_table_integrated.html:1311
+#: templates/corporate/comparison_table_integrated.html:1324
+#: templates/corporate/comparison_table_integrated.html:1325
+#: templates/corporate/comparison_table_integrated.html:1337
+#: templates/corporate/comparison_table_integrated.html:1338
+#: templates/corporate/comparison_table_integrated.html:1350
+#: templates/corporate/comparison_table_integrated.html:1351
+#: templates/corporate/comparison_table_integrated.html:1364
+#: templates/corporate/comparison_table_integrated.html:1365
+#: templates/corporate/comparison_table_integrated.html:1377
+#: templates/corporate/comparison_table_integrated.html:1378
+#: templates/corporate/comparison_table_integrated.html:1390
+#: templates/corporate/comparison_table_integrated.html:1391
+#: templates/corporate/comparison_table_integrated.html:1404
+#: templates/corporate/comparison_table_integrated.html:1417
+#: templates/corporate/comparison_table_integrated.html:1430
+#: templates/corporate/comparison_table_integrated.html:1443
+#: templates/corporate/comparison_table_integrated.html:1456
+#: templates/corporate/comparison_table_integrated.html:1469
+#: templates/corporate/comparison_table_integrated.html:1485
+#: templates/corporate/comparison_table_integrated.html:1486
+#: templates/corporate/comparison_table_integrated.html:1487
+#: templates/corporate/comparison_table_integrated.html:1488
+#: templates/corporate/comparison_table_integrated.html:1497
+#: templates/corporate/comparison_table_integrated.html:1498
+#: templates/corporate/comparison_table_integrated.html:1499
+#: templates/corporate/comparison_table_integrated.html:1511
+#: templates/corporate/comparison_table_integrated.html:1512
+#: templates/corporate/comparison_table_integrated.html:1522
+#: templates/corporate/comparison_table_integrated.html:1523
+#: templates/corporate/comparison_table_integrated.html:1537
+#: templates/corporate/comparison_table_integrated.html:1538
+#: templates/corporate/comparison_table_integrated.html:1539
+#: templates/corporate/comparison_table_integrated.html:1550
+#: templates/corporate/comparison_table_integrated.html:1561
+#: templates/corporate/comparison_table_integrated.html:1572
+#: templates/corporate/comparison_table_integrated.html:1583
+#: templates/corporate/comparison_table_integrated.html:1594
+#: templates/corporate/comparison_table_integrated.html:1605
+msgid "Supported"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:230
+#: templates/corporate/comparison_table_integrated.html:244
+#: templates/corporate/comparison_table_integrated.html:258
+#: templates/corporate/comparison_table_integrated.html:269
+#: templates/corporate/comparison_table_integrated.html:270
+#: templates/corporate/comparison_table_integrated.html:271
+#: templates/corporate/comparison_table_integrated.html:462
+#: templates/corporate/comparison_table_integrated.html:475
+#: templates/corporate/comparison_table_integrated.html:489
+#: templates/corporate/comparison_table_integrated.html:510
+#: templates/corporate/comparison_table_integrated.html:523
+#: templates/corporate/comparison_table_integrated.html:536
+#: templates/corporate/comparison_table_integrated.html:550
+#: templates/corporate/comparison_table_integrated.html:565
+#: templates/corporate/comparison_table_integrated.html:580
+#: templates/corporate/comparison_table_integrated.html:581
+#: templates/corporate/comparison_table_integrated.html:595
+#: templates/corporate/comparison_table_integrated.html:596
+#: templates/corporate/comparison_table_integrated.html:611
+#: templates/corporate/comparison_table_integrated.html:612
+#: templates/corporate/comparison_table_integrated.html:624
+#: templates/corporate/comparison_table_integrated.html:625
+#: templates/corporate/comparison_table_integrated.html:635
+#: templates/corporate/comparison_table_integrated.html:636
+#: templates/corporate/comparison_table_integrated.html:637
+#: templates/corporate/comparison_table_integrated.html:680
+#: templates/corporate/comparison_table_integrated.html:693
+#: templates/corporate/comparison_table_integrated.html:707
+#: templates/corporate/comparison_table_integrated.html:708
+#: templates/corporate/comparison_table_integrated.html:720
+#: templates/corporate/comparison_table_integrated.html:721
+#: templates/corporate/comparison_table_integrated.html:737
+#: templates/corporate/comparison_table_integrated.html:738
+#: templates/corporate/comparison_table_integrated.html:739
+#: templates/corporate/comparison_table_integrated.html:754
+#: templates/corporate/comparison_table_integrated.html:755
+#: templates/corporate/comparison_table_integrated.html:756
+#: templates/corporate/comparison_table_integrated.html:769
+#: templates/corporate/comparison_table_integrated.html:770
+#: templates/corporate/comparison_table_integrated.html:784
+#: templates/corporate/comparison_table_integrated.html:785
+#: templates/corporate/comparison_table_integrated.html:786
+#: templates/corporate/comparison_table_integrated.html:795
+#: templates/corporate/comparison_table_integrated.html:796
+#: templates/corporate/comparison_table_integrated.html:797
+#: templates/corporate/comparison_table_integrated.html:806
+#: templates/corporate/comparison_table_integrated.html:807
+#: templates/corporate/comparison_table_integrated.html:819
+#: templates/corporate/comparison_table_integrated.html:832
+#: templates/corporate/comparison_table_integrated.html:845
+#: templates/corporate/comparison_table_integrated.html:846
+#: templates/corporate/comparison_table_integrated.html:863
+#: templates/corporate/comparison_table_integrated.html:876
+#: templates/corporate/comparison_table_integrated.html:889
+#: templates/corporate/comparison_table_integrated.html:909
+#: templates/corporate/comparison_table_integrated.html:924
+#: templates/corporate/comparison_table_integrated.html:939
+#: templates/corporate/comparison_table_integrated.html:952
+#: templates/corporate/comparison_table_integrated.html:965
+#: templates/corporate/comparison_table_integrated.html:978
+#: templates/corporate/comparison_table_integrated.html:991
+#: templates/corporate/comparison_table_integrated.html:992
+#: templates/corporate/comparison_table_integrated.html:1080
+#: templates/corporate/comparison_table_integrated.html:1081
+#: templates/corporate/comparison_table_integrated.html:1095
+#: templates/corporate/comparison_table_integrated.html:1096
+#: templates/corporate/comparison_table_integrated.html:1110
+#: templates/corporate/comparison_table_integrated.html:1121
+#: templates/corporate/comparison_table_integrated.html:1122
+#: templates/corporate/comparison_table_integrated.html:1123
+#: templates/corporate/comparison_table_integrated.html:1132
+#: templates/corporate/comparison_table_integrated.html:1133
+#: templates/corporate/comparison_table_integrated.html:1147
+#: templates/corporate/comparison_table_integrated.html:1148
+#: templates/corporate/comparison_table_integrated.html:1162
+#: templates/corporate/comparison_table_integrated.html:1163
+#: templates/corporate/comparison_table_integrated.html:1177
+#: templates/corporate/comparison_table_integrated.html:1178
+#: templates/corporate/comparison_table_integrated.html:1197
+#: templates/corporate/comparison_table_integrated.html:1210
+#: templates/corporate/comparison_table_integrated.html:1223
+#: templates/corporate/comparison_table_integrated.html:1224
+#: templates/corporate/comparison_table_integrated.html:1238
+#: templates/corporate/comparison_table_integrated.html:1239
+#: templates/corporate/comparison_table_integrated.html:1255
+#: templates/corporate/comparison_table_integrated.html:1256
+#: templates/corporate/comparison_table_integrated.html:1268
+#: templates/corporate/comparison_table_integrated.html:1269
+#: templates/corporate/comparison_table_integrated.html:1279
+#: templates/corporate/comparison_table_integrated.html:1280
+#: templates/corporate/comparison_table_integrated.html:1281
+#: templates/corporate/comparison_table_integrated.html:1308
+#: templates/corporate/comparison_table_integrated.html:1309
+#: templates/corporate/comparison_table_integrated.html:1322
+#: templates/corporate/comparison_table_integrated.html:1323
+#: templates/corporate/comparison_table_integrated.html:1335
+#: templates/corporate/comparison_table_integrated.html:1336
+#: templates/corporate/comparison_table_integrated.html:1348
+#: templates/corporate/comparison_table_integrated.html:1349
+#: templates/corporate/comparison_table_integrated.html:1362
+#: templates/corporate/comparison_table_integrated.html:1363
+#: templates/corporate/comparison_table_integrated.html:1375
+#: templates/corporate/comparison_table_integrated.html:1376
+#: templates/corporate/comparison_table_integrated.html:1388
+#: templates/corporate/comparison_table_integrated.html:1389
+#: templates/corporate/comparison_table_integrated.html:1401
+#: templates/corporate/comparison_table_integrated.html:1402
+#: templates/corporate/comparison_table_integrated.html:1403
+#: templates/corporate/comparison_table_integrated.html:1414
+#: templates/corporate/comparison_table_integrated.html:1415
+#: templates/corporate/comparison_table_integrated.html:1416
+#: templates/corporate/comparison_table_integrated.html:1427
+#: templates/corporate/comparison_table_integrated.html:1428
+#: templates/corporate/comparison_table_integrated.html:1429
+#: templates/corporate/comparison_table_integrated.html:1440
+#: templates/corporate/comparison_table_integrated.html:1441
+#: templates/corporate/comparison_table_integrated.html:1442
+#: templates/corporate/comparison_table_integrated.html:1453
+#: templates/corporate/comparison_table_integrated.html:1454
+#: templates/corporate/comparison_table_integrated.html:1455
+#: templates/corporate/comparison_table_integrated.html:1466
+#: templates/corporate/comparison_table_integrated.html:1467
+#: templates/corporate/comparison_table_integrated.html:1468
+#: templates/corporate/comparison_table_integrated.html:1520
+#: templates/corporate/comparison_table_integrated.html:1521
+#: templates/corporate/comparison_table_integrated.html:1536
+#: templates/corporate/comparison_table_integrated.html:1547
+#: templates/corporate/comparison_table_integrated.html:1548
+msgid "Self-managed"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:282
+msgid "For organizations with up to 10 users"
+msgstr ""
+
+#: templates/corporate/comparison_table_integrated.html:1290
+#: templates/corporate/comparison_table_integrated.html:1509
+#: templates/corporate/comparison_table_integrated.html:1510
+#: templates/corporate/comparison_table_integrated.html:1558
+#: templates/corporate/comparison_table_integrated.html:1559
+#: templates/corporate/comparison_table_integrated.html:1569
+#: templates/corporate/comparison_table_integrated.html:1580
+#: templates/corporate/comparison_table_integrated.html:1591
+#: templates/corporate/comparison_table_integrated.html:1592
+#: templates/corporate/comparison_table_integrated.html:1602
+#: templates/corporate/comparison_table_integrated.html:1603
+#: templates/corporate/comparison_table_integrated.html:1604
+msgid "Not available"
+msgstr ""
+
 #: templates/corporate/development-community.html:23
 msgid "The Zulip development community"
 msgstr ""
@@ -635,11 +1211,7 @@ msgstr ""
 msgid "Join as a contributor"
 msgstr ""
 
-#: templates/corporate/event_status.html:5
-msgid "Billing status"
-msgstr ""
-
-#: templates/corporate/for/business.html:33
+#: templates/corporate/for/business.html:25
 #: templates/corporate/for/communities.html:34
 #: templates/corporate/for/communities.html:64
 #: templates/corporate/for/education.html:32
@@ -654,12 +1226,12 @@ msgstr ""
 msgid "Create organization"
 msgstr "新建組織"
 
-#: templates/corporate/for/business.html:36
+#: templates/corporate/for/business.html:28
 #: templates/corporate/self-hosting.html:27 templates/zerver/footer.html:11
 msgid "Plans & pricing"
 msgstr ""
 
-#: templates/corporate/for/business.html:39
+#: templates/corporate/for/business.html:31
 #: templates/corporate/for/communities.html:40
 #: templates/corporate/for/communities.html:70
 #: templates/corporate/for/education.html:38
@@ -692,51 +1264,48 @@ msgstr ""
 msgid "View pricing"
 msgstr ""
 
-#: templates/corporate/remote_billing_server_deactivate.html:5
-msgid "Deactivate server registration?"
-msgstr ""
-
-#: templates/corporate/self-hosting.html:31
+#: templates/corporate/self-hosting.html:33
 msgid "Zulip for business"
 msgstr ""
 
-#: templates/corporate/support_request.html:7 templates/zerver/footer.html:43
+#: templates/corporate/support/support_request.html:7
+#: templates/zerver/footer.html:43
 msgid "Contact support"
 msgstr "聯繫支援"
 
-#: templates/corporate/support_request.html:15
+#: templates/corporate/support/support_request.html:15
 msgid "From"
 msgstr ""
 
-#: templates/corporate/support_request.html:19
+#: templates/corporate/support/support_request.html:19
 msgid "Organization"
 msgstr "組織"
 
-#: templates/corporate/support_request.html:23
+#: templates/corporate/support/support_request.html:23
 msgid "Subject"
 msgstr ""
 
-#: templates/corporate/support_request.html:27
+#: templates/corporate/support/support_request.html:27
 msgid "Message"
 msgstr "訊息"
 
-#: templates/corporate/support_request.html:33
+#: templates/corporate/support/support_request.html:33
 msgid "Submit"
 msgstr "提交"
 
-#: templates/corporate/support_request_thanks.html:4
+#: templates/corporate/support/support_request_thanks.html:4
 msgid "Thanks for contacting us"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:10
+#: templates/corporate/support/support_request_thanks.html:10
 msgid "Thanks for contacting us!"
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:11
+#: templates/corporate/support/support_request_thanks.html:11
 msgid "We will be in touch with you soon."
 msgstr ""
 
-#: templates/corporate/support_request_thanks.html:13
+#: templates/corporate/support/support_request_thanks.html:13
 msgid ""
 "\n"
 "            You can find answers to frequently asked questions in the\n"
@@ -752,14 +1321,6 @@ msgstr ""
 msgid "Try Zulip now"
 msgstr ""
 
-#: templates/corporate/upgrade.html:5
-msgid "Upgrade"
-msgstr ""
-
-#: templates/corporate/upgrade.html:199
-msgid "Convert demo organization before upgrading."
-msgstr ""
-
 #: templates/corporate/zulipchat_migration_tos.html:3
 msgid ""
 "\n"
@@ -807,7 +1368,7 @@ msgstr ""
 
 #: templates/zerver/accounts_home.html:5
 #: templates/zerver/accounts_home.html:72 templates/zerver/login.html:154
-#: templates/zerver/portico-header.html:43 templates/zerver/register.html:234
+#: templates/zerver/portico-header.html:46 templates/zerver/register.html:234
 msgid "Sign up"
 msgstr "註冊"
 
@@ -840,8 +1401,8 @@ msgstr ""
 #: templates/zerver/footer.html:17
 #: templates/zerver/log_into_subdomain_token_invalid.html:13
 #: templates/zerver/login.html:5 templates/zerver/login.html:128
-#: templates/zerver/portico-header.html:33
-#: templates/zerver/portico-header.html:39
+#: templates/zerver/portico-header.html:36
+#: templates/zerver/portico-header.html:42
 msgid "Log in"
 msgstr "登入"
 
@@ -874,26 +1435,22 @@ msgstr ""
 msgid "Error loading Zulip. Try reloading the page."
 msgstr ""
 
-#: templates/zerver/app/index.html:176
+#: templates/zerver/app/index.html:178
 msgid "Unable to connect to Zulip."
 msgstr ""
 
-#: templates/zerver/app/index.html:177
+#: templates/zerver/app/index.html:179
 msgid "Updates may be delayed."
 msgstr ""
 
-#: templates/zerver/app/index.html:178
+#: templates/zerver/app/index.html:180
 msgid "Retrying soon…"
 msgstr ""
 
-#: templates/zerver/app/index.html:179
+#: templates/zerver/app/index.html:181
 msgid "Try now."
 msgstr "立即重試。"
 
-#: templates/zerver/app/index.html:259 templates/zerver/app/index.html:261
-msgid "Messages"
-msgstr "訊息"
-
 #: templates/zerver/auth_subdomain.html:4
 msgid "Authentication subdomain error"
 msgstr ""
@@ -1116,21 +1673,21 @@ msgstr "訪客"
 msgid "Normal users"
 msgstr "普通使用者"
 
-#: templates/zerver/development/email_log.html:34
+#: templates/zerver/development/email_log.html:31
 msgid "Forward emails to an email account"
 msgstr ""
 
-#: templates/zerver/development/email_log.html:68
+#: templates/zerver/development/email_log.html:64
 msgid "Close"
 msgstr "關閉"
 
-#: templates/zerver/development/email_log.html:70
+#: templates/zerver/development/email_log.html:66
 msgid "Update"
 msgstr "更新"
 
 #: templates/zerver/development/integrations_dev_panel.html:19
-#: templates/zerver/portico-header.html:5
-#: templates/zerver/portico-header.html:9
+#: templates/zerver/portico-header.html:8
+#: templates/zerver/portico-header.html:12
 msgid "Zulip"
 msgstr "Zulip"
 
@@ -2353,7 +2910,7 @@ msgstr ""
 #: templates/zerver/emails/sponsorship_approved_community_plan.txt:4
 msgid ""
 "If you could list Zulip as a sponsor on your website, we would really "
-"appreciate it!."
+"appreciate it!"
 msgstr ""
 
 #: templates/zerver/find_account.html:4
@@ -2373,7 +2930,16 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:38
+#: templates/zerver/find_account.html:32
+#, python-format
+msgid ""
+"\n"
+"                If you don't receive an email, you can\n"
+"                find accounts for another email address.\n"
+"                "
+msgstr ""
+
+#: templates/zerver/find_account.html:43
 msgid ""
 "\n"
 "                    Enter your email address to receive an email with the URLs\n"
@@ -2383,12 +2949,12 @@ msgid ""
 "                    "
 msgstr ""
 
-#: templates/zerver/find_account.html:51
+#: templates/zerver/find_account.html:56
 msgid "Email address"
 msgstr "Email 地址"
 
-#: templates/zerver/find_account.html:53
-#: templates/zerver/portico-header.html:48
+#: templates/zerver/find_account.html:58
+#: templates/zerver/portico-header.html:51
 msgid "Find accounts"
 msgstr "查詢帳號"
 
@@ -2420,7 +2986,7 @@ msgstr "整合"
 msgid "Desktop & mobile apps"
 msgstr "桌面 & 行動應用"
 
-#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:49
+#: templates/zerver/footer.html:16 templates/zerver/portico-header.html:52
 msgid "New organization"
 msgstr "新組織"
 
@@ -2788,12 +3354,8 @@ msgid ""
 "number of licenses, then try again."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:4
-msgid "Rate limit exceeded"
-msgstr ""
-
-#: templates/zerver/rate_limit_exceeded.html:15
-msgid "Rate limit exceeded."
+#: templates/zerver/portico-header.html:4
+msgid "Skip to main content"
 msgstr ""
 
 #: templates/zerver/rate_limit_exceeded.html:17
@@ -2802,11 +3364,6 @@ msgid ""
 "                        often a user can perform this action."
 msgstr ""
 
-#: templates/zerver/rate_limit_exceeded.html:19
-#, python-format
-msgid "You can try again in %(retry_after)s seconds."
-msgstr ""
-
 #: templates/zerver/realm_creation_disabled.html:4
 #: templates/zerver/realm_creation_disabled.html:13
 msgid "Organization creation link required"
@@ -2975,6 +3532,22 @@ msgstr ""
 msgid "Subscribe me to Zulip's low-traffic newsletter (a few emails a year)."
 msgstr ""
 
+#: templates/zerver/remote_realm_server_mismatch_error.html:16
+msgid "Unexpected Zulip server registration"
+msgstr ""
+
+#: templates/zerver/remote_realm_server_mismatch_error.html:18
+#, python-format
+msgid ""
+"\n"
+"                        Your Zulip organization is registered as associated with a\n"
+"                        different Zulip server installation.\n"
+"\n"
+"                        Please contact Zulip support\n"
+"                        for assistance in resolving this issue.\n"
+"                        "
+msgstr ""
+
 #: templates/zerver/reset.html:4 templates/zerver/reset.html:12
 msgid "Reset your password"
 msgstr "重置您的密碼"
@@ -3132,123 +3705,107 @@ msgid ""
 "                        "
 msgstr ""
 
-#: templates/zilencer/remote_realm_server_mismatch_error.html:16
-msgid "Unexpected Zulip server registration"
-msgstr ""
-
-#: templates/zilencer/remote_realm_server_mismatch_error.html:18
-#, python-format
-msgid ""
-"\n"
-"                        Your Zulip organization is registered as associated with a\n"
-"                        different Zulip server installation.\n"
-"\n"
-"                        Please contact Zulip support\n"
-"                        for assistance in resolving this issue.\n"
-"                        "
-msgstr ""
-
-#: zerver/actions/create_user.py:98
+#: zerver/actions/create_user.py:97
 msgid "signups"
 msgstr "註冊"
 
-#: zerver/actions/create_user.py:111
+#: zerver/actions/create_user.py:110
 #, python-brace-format
-msgid "{user} just signed up for Zulip. (total: {user_count})"
-msgstr "{user} 已在 Zulip 註冊。(總數:{user_count})"
+msgid "{user} joined this organization."
+msgstr ""
 
-#: zerver/actions/create_user.py:261
+#: zerver/actions/create_user.py:265
 #, python-brace-format
 msgid "{user} accepted your invitation to join Zulip!"
 msgstr "{user} 已同意您的邀請並加入了 Zulip!"
 
-#: zerver/actions/create_user.py:643
+#: zerver/actions/create_user.py:647
 msgid ""
 "Cannot activate a placeholder account; ask the user to sign up, instead."
 msgstr ""
 
-#: zerver/actions/custom_profile_fields.py:127
+#: zerver/actions/custom_profile_fields.py:122
 msgid "Invalid order mapping."
 msgstr "無效的順序映射"
 
-#: zerver/actions/custom_profile_fields.py:206 zerver/lib/users.py:390
-#: zerver/views/custom_profile_fields.py:195
-#: zerver/views/custom_profile_fields.py:216
+#: zerver/actions/custom_profile_fields.py:201 zerver/lib/users.py:392
+#: zerver/views/custom_profile_fields.py:196
+#: zerver/views/custom_profile_fields.py:217
 #, python-brace-format
 msgid "Field id {id} not found."
 msgstr "找不到欄位 id {id}。"
 
-#: zerver/actions/default_streams.py:25
+#: zerver/actions/default_streams.py:20
 #, python-brace-format
 msgid "Invalid default stream group name '{group_name}'"
 msgstr ""
 
-#: zerver/actions/default_streams.py:29
+#: zerver/actions/default_streams.py:24
 #, python-brace-format
 msgid "Default stream group name too long (limit: {max_length} characters)"
 msgstr ""
 
-#: zerver/actions/default_streams.py:37
+#: zerver/actions/default_streams.py:32
 #, python-brace-format
 msgid ""
 "Default stream group name '{group_name}' contains NULL (0x00) characters."
 msgstr ""
 
-#: zerver/actions/default_streams.py:53
+#: zerver/actions/default_streams.py:48
 #, python-brace-format
 msgid "Invalid default stream group {group_name}"
 msgstr ""
 
-#: zerver/actions/default_streams.py:101 zerver/actions/default_streams.py:128
+#: zerver/actions/default_streams.py:96 zerver/actions/default_streams.py:123
 #, python-brace-format
 msgid ""
 "'{stream_name}' is a default stream and cannot be added to '{group_name}'"
 msgstr "'{stream_name}' 是預設串流,不能被加到 '{group_name}'"
 
-#: zerver/actions/default_streams.py:112 zerver/actions/default_streams.py:173
+#: zerver/actions/default_streams.py:107 zerver/actions/default_streams.py:168
 #, python-brace-format
 msgid "Default stream group '{group_name}' already exists"
 msgstr "預設串流群組 '{group_name}' 已存在"
 
-#: zerver/actions/default_streams.py:134
+#: zerver/actions/default_streams.py:129
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is already present in default stream group "
 "'{group_name}'"
 msgstr "串流 '{stream_name}' 已經存在於預設串流群組 '{group_name}'"
 
-#: zerver/actions/default_streams.py:151
+#: zerver/actions/default_streams.py:146
 #, python-brace-format
 msgid ""
 "Stream '{stream_name}' is not present in default stream group '{group_name}'"
 msgstr "串流 '{stream_name}' 不存在於預設串流群組 '{group_name}'"
 
-#: zerver/actions/default_streams.py:166
+#: zerver/actions/default_streams.py:161
 #, python-brace-format
 msgid "This default stream group is already named '{group_name}'"
 msgstr ""
 
-#: zerver/actions/invites.py:170
+#: zerver/actions/invites.py:163
 msgid ""
 "To protect users, Zulip limits the number of invitations you can send in one"
 " day. Because you have reached the limit, no invitations were sent."
 msgstr ""
 
-#: zerver/actions/invites.py:242
+#: zerver/actions/invites.py:235
 msgid ""
 "Your account is too new to send invites for this organization. Ask an "
 "organization admin, or a more experienced user."
 msgstr "您的帳號太新,以至於不能發送此組織的邀請。詢問組織管理者,或是更有經驗的使用者。"
 
-#: zerver/actions/invites.py:282
+#: zerver/actions/invites.py:275
 msgid "Some emails did not validate, so we didn't send any invitations."
 msgstr "部份 emails 尚未驗證,所以我們沒有送出邀請。"
 
-#: zerver/actions/invites.py:290
+#: zerver/actions/invites.py:283
 msgid "We weren't able to invite anyone."
 msgstr ""
 
-#: zerver/actions/invites.py:326
+#: zerver/actions/invites.py:319
 msgid ""
 "Some of those addresses are already using Zulip, so we didn't send them an "
 "invitation. We did send invitations to everyone else!"
@@ -3278,72 +3835,72 @@ msgstr "當改變串流時,無法修改訊息內容"
 msgid "Widgets cannot be edited."
 msgstr ""
 
-#: zerver/actions/message_edit.py:170
+#: zerver/actions/message_edit.py:129
+msgid "Your organization has turned off message editing"
+msgstr "您的組織關閉了訊息編輯"
+
+#: zerver/actions/message_edit.py:133 zerver/actions/message_edit.py:1243
+msgid "You don't have permission to edit this message"
+msgstr "您沒有權限編輯此訊息"
+
+#: zerver/actions/message_edit.py:138
+msgid "The time limit for editing this message has passed"
+msgstr "可編輯此訊息的時間已過"
+
+#: zerver/actions/message_edit.py:191
 #, python-brace-format
 msgid "{user} has marked this topic as resolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:172
+#: zerver/actions/message_edit.py:193
 #, python-brace-format
 msgid "{user} has marked this topic as unresolved."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1005
+#: zerver/actions/message_edit.py:1033
 #, python-brace-format
 msgid "This topic was moved to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1009
+#: zerver/actions/message_edit.py:1037
 #, python-brace-format
 msgid "A message was moved from this topic to {new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1013
+#: zerver/actions/message_edit.py:1041
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved from this topic to "
 "{new_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1068
+#: zerver/actions/message_edit.py:1085
 #, python-brace-format
 msgid "This topic was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1073
+#: zerver/actions/message_edit.py:1090
 #, python-brace-format
 msgid ""
 "[A message]({message_link}) was moved here from {old_location} by {user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1077
+#: zerver/actions/message_edit.py:1094
 #, python-brace-format
 msgid ""
 "{changed_messages_count} messages were moved here from {old_location} by "
 "{user}."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1206
-msgid "Your organization has turned off message editing"
-msgstr "您的組織關閉了訊息編輯"
-
-#: zerver/actions/message_edit.py:1224 zerver/actions/message_edit.py:1227
-msgid "You don't have permission to edit this message"
-msgstr "您沒有權限編輯此訊息"
-
-#: zerver/actions/message_edit.py:1238
-msgid "The time limit for editing this message has passed"
-msgstr "可編輯此訊息的時間已過"
-
-#: zerver/actions/message_edit.py:1253
+#: zerver/actions/message_edit.py:1258
 msgid "The time limit for editing this message's topic has passed."
 msgstr ""
 
-#: zerver/actions/message_edit.py:1308
+#: zerver/actions/message_edit.py:1313
 msgid "You don't have permission to move this message"
 msgstr "您沒有權限移動此訊息"
 
-#: zerver/actions/message_edit.py:1323
+#: zerver/actions/message_edit.py:1328
 msgid "The time limit for editing this message's stream has passed"
 msgstr ""
 
@@ -3362,137 +3919,142 @@ msgstr ""
 msgid "Invalid message flag operation: '{operation}'"
 msgstr ""
 
-#: zerver/actions/message_flags.py:337 zerver/lib/message.py:849
-#: zerver/lib/message.py:855
+#: zerver/actions/message_flags.py:337 zerver/lib/message.py:291
+#: zerver/lib/message.py:297
 msgid "Invalid message(s)"
 msgstr "無效的訊息(s)"
 
-#: zerver/actions/message_send.py:176
+#: zerver/actions/message_send.py:172
 msgid "Unable to render message"
 msgstr "無法渲染訊息"
 
-#: zerver/actions/message_send.py:1271
+#: zerver/actions/message_send.py:1266
 msgid "Expected exactly one stream"
 msgstr "預期至少一個串流"
 
-#: zerver/actions/message_send.py:1282
+#: zerver/actions/message_send.py:1277
 msgid "Invalid data type for stream"
 msgstr "無效的串流資料類型"
 
-#: zerver/actions/message_send.py:1298 zerver/actions/message_send.py:1308
+#: zerver/actions/message_send.py:1293 zerver/actions/message_send.py:1303
 #: zerver/lib/recipient_parsing.py:25
 msgid "Invalid data type for recipients"
 msgstr "無效的 recipients 資料類型"
 
-#: zerver/actions/message_send.py:1316 zerver/actions/message_send.py:1324
+#: zerver/actions/message_send.py:1311 zerver/actions/message_send.py:1319
 msgid "Recipient lists may contain emails or user IDs, but not both."
 msgstr "接收者清單可包含 emails 或是使用者 IDs,但不能兩個同時存在。"
 
-#: zerver/actions/message_send.py:1474
+#: zerver/actions/message_send.py:1469
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream ID {stream_id}, "
 "but there is no stream with that ID."
 msgstr "您的機器人 {bot_identity} 嘗試發送訊息至串流 ID {stream_id},但無串流是該 ID。"
 
-#: zerver/actions/message_send.py:1485
+#: zerver/actions/message_send.py:1480
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}, but"
 " that stream does not exist. Click [here]({new_stream_link}) to create it."
 msgstr "您的機器人 {bot_identity} 嘗試發送訊息至串流 {stream_name},但該串流不存在。點擊 [此處]({new_stream_link}) 以新建他。"
 
-#: zerver/actions/message_send.py:1497
+#: zerver/actions/message_send.py:1492
 #, python-brace-format
 msgid ""
 "Your bot {bot_identity} tried to send a message to stream {stream_name}. The"
 " stream exists but does not have any subscribers."
 msgstr "您的機器人 {bot_identity} 嘗試發送訊息至串流 {stream_name}。該串流存在,但沒有訂閱者。"
 
-#: zerver/actions/message_send.py:1544
+#: zerver/actions/message_send.py:1541
 msgid "Direct messages are disabled in this organization."
 msgstr ""
 
-#: zerver/actions/message_send.py:1554
+#: zerver/actions/message_send.py:1551
 msgid "You do not have permission to access some of the recipients."
 msgstr ""
 
-#: zerver/actions/message_send.py:1685
+#: zerver/actions/message_send.py:1682
 msgid "Topics are required in this organization"
 msgstr ""
 
-#: zerver/actions/message_send.py:1747
+#: zerver/actions/message_send.py:1744
 msgid "Widgets: API programmer sent invalid JSON content"
 msgstr ""
 
-#: zerver/actions/message_send.py:1753
+#: zerver/actions/message_send.py:1750
 #, python-brace-format
 msgid "Widgets: {error_msg}"
 msgstr ""
 
-#: zerver/actions/realm_emoji.py:39 zerver/views/realm_emoji.py:38
+#: zerver/actions/realm_emoji.py:33 zerver/views/realm_emoji.py:39
 msgid "A custom emoji with this name already exists."
 msgstr "自定義表情符號名稱已存在。"
 
-#: zerver/actions/realm_linkifiers.py:156
+#: zerver/actions/realm_linkifiers.py:150
 msgid "The ordered list must not contain duplicated linkifiers"
 msgstr ""
 
-#: zerver/actions/realm_linkifiers.py:161
+#: zerver/actions/realm_linkifiers.py:155
 msgid "The ordered list must enumerate all existing linkifiers exactly once"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:150
+#: zerver/actions/realm_settings.py:220
+#, python-brace-format
+msgid "Invalid authentication method: {name}. Valid methods are: {methods}"
+msgstr ""
+
+#: zerver/actions/scheduled_messages.py:145
 msgid "Scheduled message was already sent"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:155
+#: zerver/actions/scheduled_messages.py:150
 #: zerver/views/scheduled_messages.py:88
 #: zerver/views/scheduled_messages.py:129
 msgid "Scheduled delivery time must be in the future."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:290
+#: zerver/actions/scheduled_messages.py:285
 msgid "Message could not be sent at the scheduled time."
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:341
+#: zerver/actions/scheduled_messages.py:336
 #, python-brace-format
 msgid ""
 "The message you scheduled for {delivery_datetime} was not sent because of "
 "the following error:"
 msgstr ""
 
-#: zerver/actions/scheduled_messages.py:346
+#: zerver/actions/scheduled_messages.py:341
 msgid "[View scheduled messages](#scheduled)"
 msgstr ""
 
-#: zerver/actions/streams.py:119
+#: zerver/actions/streams.py:117
 msgid "Stream is already deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:243
+#: zerver/actions/streams.py:241
 msgid "Stream is not currently deactivated"
 msgstr ""
 
-#: zerver/actions/streams.py:246
+#: zerver/actions/streams.py:244
 #, python-brace-format
 msgid "Stream named {stream_name} already exists"
 msgstr ""
 
-#: zerver/actions/streams.py:317
+#: zerver/actions/streams.py:315
 #, python-brace-format
 msgid "Stream {stream_name} un-archived."
 msgstr ""
 
-#: zerver/actions/streams.py:1180
+#: zerver/actions/streams.py:1178
 #, python-brace-format
 msgid ""
 "{user} changed the [access permissions](/help/stream-permissions) for this "
 "stream from **{old_policy}** to **{new_policy}**."
 msgstr ""
 
-#: zerver/actions/streams.py:1355
+#: zerver/actions/streams.py:1353
 #, python-brace-format
 msgid ""
 "{user} changed the [posting permissions](/help/stream-sending-policy) for this stream:\n"
@@ -3501,38 +4063,38 @@ msgid ""
 "* **New permissions**: {new_policy}.\n"
 msgstr ""
 
-#: zerver/actions/streams.py:1471
+#: zerver/actions/streams.py:1469
 #, python-brace-format
 msgid "{user_name} renamed stream {old_stream_name} to {new_stream_name}."
 msgstr "{user_name} 重新命名串流 {old_stream_name} 變成 {new_stream_name}."
 
-#: zerver/actions/streams.py:1487 zerver/actions/streams.py:1489
-#: zerver/views/streams.py:798
+#: zerver/actions/streams.py:1485 zerver/actions/streams.py:1487
+#: zerver/views/streams.py:802
 msgid "No description."
 msgstr "無敘述。"
 
-#: zerver/actions/streams.py:1492
+#: zerver/actions/streams.py:1490
 #, python-brace-format
 msgid "{user} changed the description for this stream."
 msgstr ""
 
-#: zerver/actions/streams.py:1494
+#: zerver/actions/streams.py:1492
 msgid "Old description"
 msgstr ""
 
-#: zerver/actions/streams.py:1498
+#: zerver/actions/streams.py:1496
 msgid "New description"
 msgstr ""
 
-#: zerver/actions/streams.py:1564 zerver/actions/streams.py:1569
+#: zerver/actions/streams.py:1562 zerver/actions/streams.py:1567
 msgid "Forever"
 msgstr ""
 
-#: zerver/actions/streams.py:1570
+#: zerver/actions/streams.py:1568
 msgid "Messages in this stream will now be retained forever."
 msgstr ""
 
-#: zerver/actions/streams.py:1576
+#: zerver/actions/streams.py:1574
 #, python-brace-format
 msgid ""
 "{user} has changed the [message retention period](/help/message-retention-policy) for this stream:\n"
@@ -3546,7 +4108,7 @@ msgstr ""
 msgid "You cannot attach a submessage to this message."
 msgstr ""
 
-#: zerver/actions/typing.py:56 zerver/lib/addressee.py:33
+#: zerver/actions/typing.py:57 zerver/lib/addressee.py:31
 #, python-brace-format
 msgid "Invalid user ID {user_id}"
 msgstr ""
@@ -3556,187 +4118,187 @@ msgstr ""
 msgid "User group '{group_name}' already exists."
 msgstr ""
 
-#: zerver/decorator.py:251
+#: zerver/decorator.py:254
 msgid "This API is not available to incoming webhook bots."
 msgstr ""
 
-#: zerver/decorator.py:278
+#: zerver/decorator.py:281
 msgid "Account is not associated with this subdomain"
 msgstr "帳號沒被關聯至此子域名"
 
-#: zerver/decorator.py:513 zerver/decorator.py:650
+#: zerver/decorator.py:534 zerver/decorator.py:665
 msgid "This endpoint does not accept bot requests."
 msgstr ""
 
-#: zerver/decorator.py:612
+#: zerver/decorator.py:627
 msgid "Must be an server administrator"
 msgstr ""
 
-#: zerver/decorator.py:669 zerver/lib/streams.py:717 zerver/lib/streams.py:743
+#: zerver/decorator.py:684 zerver/lib/streams.py:717 zerver/lib/streams.py:743
 #: zerver/lib/streams.py:745 zerver/lib/streams.py:747
 #: zerver/lib/streams.py:766 zerver/lib/user_groups.py:97
-#: zerver/lib/user_groups.py:161 zerver/lib/users.py:230
-#: zerver/lib/users.py:259 zerver/lib/users.py:263 zerver/views/invite.py:65
-#: zerver/views/invite.py:207 zerver/views/presence.py:55
-#: zerver/views/realm_emoji.py:33 zerver/views/streams.py:322
-#: zerver/views/streams.py:629
+#: zerver/lib/user_groups.py:161 zerver/lib/users.py:232
+#: zerver/lib/users.py:261 zerver/lib/users.py:265 zerver/views/invite.py:65
+#: zerver/views/invite.py:207 zerver/views/presence.py:49
+#: zerver/views/realm_emoji.py:34 zerver/views/streams.py:324
+#: zerver/views/streams.py:631
 msgid "Insufficient permission"
 msgstr ""
 
-#: zerver/decorator.py:711
+#: zerver/decorator.py:726
 msgid "This endpoint requires HTTP basic authentication."
 msgstr ""
 
-#: zerver/decorator.py:718
+#: zerver/decorator.py:733
 msgid "Invalid authorization header for basic auth"
 msgstr "無效的 authorization header for basic auth"
 
-#: zerver/decorator.py:720
+#: zerver/decorator.py:735
 msgid "Missing authorization header for basic auth"
 msgstr "basic auth 缺少 authorization header"
 
-#: zerver/decorator.py:896
+#: zerver/decorator.py:911
 msgid "Webhook bots can only access webhooks"
 msgstr "Webhook 機器人只能存取 webhooks"
 
-#: zerver/forms.py:64
+#: zerver/forms.py:62
 #, python-brace-format
 msgid ""
 "Your account {username} has been deactivated. Please contact your "
 "organization administrator to reactivate it."
 msgstr ""
 
-#: zerver/forms.py:67
+#: zerver/forms.py:65
 msgid "The password is too weak."
 msgstr ""
 
-#: zerver/forms.py:92
+#: zerver/forms.py:90
 msgid "Subdomain needs to have length 3 or greater."
 msgstr "子域名需要長度至少為 3"
 
-#: zerver/forms.py:93
+#: zerver/forms.py:91
 msgid "Subdomain cannot start or end with a '-'."
 msgstr "子域名不能開頭或結尾有 '-'。"
 
-#: zerver/forms.py:94
+#: zerver/forms.py:92
 msgid "Subdomain can only have lowercase letters, numbers, and '-'s."
 msgstr "子域名只能是英文字母、數字、'-'。"
 
-#: zerver/forms.py:95
+#: zerver/forms.py:93
 msgid "Subdomain already in use. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:96
+#: zerver/forms.py:94
 msgid "Subdomain reserved. Please choose a different one."
 msgstr ""
 
-#: zerver/forms.py:133 zerver/forms.py:136 zerver/forms.py:280
-#: zerver/lib/email_validation.py:107
+#: zerver/forms.py:131 zerver/forms.py:134 zerver/forms.py:278
+#: zerver/lib/email_validation.py:105 zilencer/views.py:148
 msgid "Please use your real email address."
 msgstr "請使用您真正的 email 地址。"
 
-#: zerver/forms.py:256
+#: zerver/forms.py:254
 #, python-brace-format
 msgid "The organization you are trying to join using {email} does not exist."
 msgstr "您嘗試加入的組織使用的 {email} 不存在。"
 
-#: zerver/forms.py:264
+#: zerver/forms.py:262
 #, python-brace-format
 msgid ""
 "Please request an invite for {email} from the organization administrator."
 msgstr ""
 
-#: zerver/forms.py:275
+#: zerver/forms.py:273
 #, python-brace-format
 msgid ""
 "Your email address, {email}, is not in one of the domains that are allowed "
 "to register for accounts in this organization."
 msgstr "您的 email 地址 {email},並不在此組織允許註冊的域名範圍內。"
 
-#: zerver/forms.py:283
+#: zerver/forms.py:281
 msgid "Email addresses containing + are not allowed in this organization."
 msgstr ""
 
-#: zerver/forms.py:296
+#: zerver/forms.py:294
 msgid ""
 "New members cannot join this organization because all Zulip licenses are in "
 "use. Please contact the person who invited you and ask them to increase the "
 "number of licenses, then try again."
 msgstr ""
 
-#: zerver/forms.py:315
+#: zerver/forms.py:313
 msgid "New password"
 msgstr "新密碼"
 
-#: zerver/forms.py:322
+#: zerver/forms.py:320
 msgid "New password confirmation"
 msgstr "確認新密碼"
 
-#: zerver/forms.py:513
+#: zerver/forms.py:511
 #, python-brace-format
 msgid ""
 "You're making too many attempts to sign in. Try again in {seconds} seconds "
 "or contact your organization administrator for help."
 msgstr ""
 
-#: zerver/forms.py:525
+#: zerver/forms.py:523
 msgid ""
 "Your password has been disabled because it is too weak. Reset your password "
 "to create a new one."
 msgstr ""
 
-#: zerver/forms.py:575
+#: zerver/forms.py:573
 msgid "Token"
 msgstr ""
 
-#: zerver/forms.py:598
+#: zerver/forms.py:596
 msgid "Tip: You can enter multiple email addresses with commas between them."
 msgstr ""
 
-#: zerver/forms.py:604
+#: zerver/forms.py:602
 msgid "Please enter at most 10 emails."
 msgstr "請輸入至少 10 個 emails。"
 
-#: zerver/forms.py:617
+#: zerver/forms.py:615
 msgid "We couldn't find that Zulip organization."
 msgstr ""
 
-#: zerver/lib/addressee.py:22
+#: zerver/lib/addressee.py:20
 #, python-brace-format
 msgid "Invalid email '{email}'"
 msgstr ""
 
-#: zerver/lib/addressee.py:61 zerver/lib/addressee.py:128
+#: zerver/lib/addressee.py:59 zerver/lib/addressee.py:126
 #: zerver/views/typing.py:38
 msgid "Missing topic"
 msgstr "缺少主題"
 
-#: zerver/lib/addressee.py:113
+#: zerver/lib/addressee.py:111
 msgid "Cannot send to multiple streams"
 msgstr "無法發送至多個串流"
 
-#: zerver/lib/addressee.py:125
+#: zerver/lib/addressee.py:123
 msgid "Missing stream"
 msgstr "缺少串流"
 
-#: zerver/lib/addressee.py:136
+#: zerver/lib/addressee.py:134
 msgid "Message must have recipients"
 msgstr "訊息必須有接受者"
 
-#: zerver/lib/addressee.py:145 zerver/lib/outgoing_webhook.py:220
+#: zerver/lib/addressee.py:143 zerver/lib/outgoing_webhook.py:215
 msgid "Invalid message type"
 msgstr "無效的訊息類型"
 
-#: zerver/lib/attachments.py:24
+#: zerver/lib/attachments.py:39
 msgid "Invalid attachment"
 msgstr "無效的附加檔案"
 
-#: zerver/lib/attachments.py:33
+#: zerver/lib/attachments.py:48
 msgid ""
 "An error occurred while deleting the attachment. Please try again later."
 msgstr ""
 
-#: zerver/lib/bot_lib.py:104
+#: zerver/lib/bot_lib.py:105
 msgid "Message must have recipients!"
 msgstr "訊息必須有接受者!"
 
@@ -3793,88 +4355,88 @@ msgstr ""
 msgid "Draft does not exist"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:140 zerver/lib/email_notifications.py:162
+#: zerver/lib/email_notifications.py:133 zerver/lib/email_notifications.py:155
 msgid "Open Zulip to see the spoiler content"
 msgstr ""
 
-#: zerver/lib/email_notifications.py:577
+#: zerver/lib/email_notifications.py:570
 #, python-brace-format
 msgid "{service_name} notifications"
 msgstr ""
 
-#: zerver/lib/email_validation.py:100
+#: zerver/lib/email_validation.py:98 zilencer/views.py:152
 msgid "Invalid address."
 msgstr "無效的地址。"
 
-#: zerver/lib/email_validation.py:105
+#: zerver/lib/email_validation.py:103
 msgid "Outside your domain."
 msgstr "超出您的域名之外。"
 
-#: zerver/lib/email_validation.py:109 zerver/views/users.py:718
+#: zerver/lib/email_validation.py:107 zerver/views/users.py:718
 msgid "Email addresses containing + are not allowed."
 msgstr "不允許 Email 地址含有 +。"
 
-#: zerver/lib/email_validation.py:154
+#: zerver/lib/email_validation.py:152
 msgid "Reserved for system bots."
 msgstr ""
 
-#: zerver/lib/email_validation.py:177
+#: zerver/lib/email_validation.py:175
 #, python-brace-format
 msgid "{email} already has an account"
 msgstr "{email} 已是帳號"
 
-#: zerver/lib/email_validation.py:179
+#: zerver/lib/email_validation.py:177
 msgid "Already has an account."
 msgstr "已有帳號"
 
-#: zerver/lib/email_validation.py:181
+#: zerver/lib/email_validation.py:179
 msgid "Account has been deactivated."
 msgstr "帳號已被停用"
 
-#: zerver/lib/emoji.py:88 zerver/views/realm_emoji.py:62
+#: zerver/lib/emoji.py:85 zerver/views/realm_emoji.py:63
 #, python-brace-format
 msgid "Emoji '{emoji_name}' does not exist"
 msgstr ""
 
-#: zerver/lib/emoji.py:101
+#: zerver/lib/emoji.py:98
 msgid "Invalid custom emoji."
 msgstr "無效的自定義表情符號。"
 
-#: zerver/lib/emoji.py:103
+#: zerver/lib/emoji.py:100
 msgid "Invalid custom emoji name."
 msgstr "無效的自定義表情符號名稱。"
 
-#: zerver/lib/emoji.py:105
+#: zerver/lib/emoji.py:102
 msgid "This custom emoji has been deactivated."
 msgstr "此自定義表情符號已被停用"
 
-#: zerver/lib/emoji.py:108 zerver/lib/emoji.py:113
+#: zerver/lib/emoji.py:105 zerver/lib/emoji.py:110
 msgid "Invalid emoji code."
 msgstr "無效的表情符號碼。"
 
-#: zerver/lib/emoji.py:110 zerver/lib/emoji.py:115
+#: zerver/lib/emoji.py:107 zerver/lib/emoji.py:112
 msgid "Invalid emoji name."
 msgstr "無效的表情符號名稱。"
 
-#: zerver/lib/emoji.py:118
+#: zerver/lib/emoji.py:115
 msgid "Invalid emoji type."
 msgstr "無效的表情符號類型。"
 
-#: zerver/lib/emoji.py:133
+#: zerver/lib/emoji.py:130
 msgid "Must be an organization administrator or emoji author"
 msgstr "必須是組織管理者或表情符號作者"
 
-#: zerver/lib/emoji.py:141
+#: zerver/lib/emoji.py:138
 msgid "Emoji names must end with either a letter or digit."
 msgstr ""
 
-#: zerver/lib/emoji.py:144
+#: zerver/lib/emoji.py:141
 msgid ""
 "Emoji names must contain only lowercase English letters, digits, spaces, "
 "dashes, and underscores."
 msgstr ""
 
-#: zerver/lib/emoji.py:147
+#: zerver/lib/emoji.py:144
 msgid "Emoji name is missing"
 msgstr "缺少表情符號名稱"
 
@@ -3882,119 +4444,119 @@ msgstr "缺少表情符號名稱"
 msgid "Could not allocate event queue"
 msgstr ""
 
-#: zerver/lib/exceptions.py:149
+#: zerver/lib/exceptions.py:150
 msgid "Not logged in: API authentication or user session required"
 msgstr "未登入:必須有 API authentication 或 user session"
 
-#: zerver/lib/exceptions.py:176
+#: zerver/lib/exceptions.py:177
 #, python-brace-format
 msgid "Stream '{stream}' does not exist"
 msgstr "串流 '{stream}' 不存在"
 
-#: zerver/lib/exceptions.py:189
+#: zerver/lib/exceptions.py:190
 #, python-brace-format
 msgid "Stream with ID '{stream_id}' does not exist"
 msgstr "串流 ID '{stream_id}' 不存在"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "organization owner"
 msgstr "組織所有者"
 
-#: zerver/lib/exceptions.py:198
+#: zerver/lib/exceptions.py:199
 msgid "user"
 msgstr "使用者"
 
-#: zerver/lib/exceptions.py:203
+#: zerver/lib/exceptions.py:204
 #, python-brace-format
 msgid "Cannot deactivate the only {entity}."
 msgstr "無法停用唯一的 {entity}。"
 
-#: zerver/lib/exceptions.py:216
+#: zerver/lib/exceptions.py:217
 #, python-brace-format
 msgid "Invalid Markdown include statement: {include_statement}"
 msgstr ""
 
-#: zerver/lib/exceptions.py:229
+#: zerver/lib/exceptions.py:230
 msgid "API usage exceeded rate limit"
 msgstr ""
 
-#: zerver/lib/exceptions.py:255 zerver/lib/request.py:445
-#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:795
+#: zerver/lib/exceptions.py:256 zerver/lib/request.py:440
+#: zerver/lib/typed_endpoint.py:361 zerver/lib/validator.py:790
 msgid "Malformed JSON"
 msgstr ""
 
-#: zerver/lib/exceptions.py:267
+#: zerver/lib/exceptions.py:268
 msgid "Must be an organization member"
 msgstr ""
 
-#: zerver/lib/exceptions.py:279 zerver/views/invite.py:42
+#: zerver/lib/exceptions.py:280 zerver/views/invite.py:42
 msgid "Must be an organization administrator"
 msgstr ""
 
-#: zerver/lib/exceptions.py:291
+#: zerver/lib/exceptions.py:292
 msgid "Must be an organization owner"
 msgstr "必須是組織所有者"
 
-#: zerver/lib/exceptions.py:305
+#: zerver/lib/exceptions.py:306
 msgid "Your username or password is incorrect"
 msgstr ""
 
-#: zerver/lib/exceptions.py:314
+#: zerver/lib/exceptions.py:315
 msgid "Account is deactivated"
 msgstr "帳號被停用"
 
-#: zerver/lib/exceptions.py:323
+#: zerver/lib/exceptions.py:324
 msgid "This organization has been deactivated"
 msgstr "此組織已被停用"
 
-#: zerver/lib/exceptions.py:333
+#: zerver/lib/exceptions.py:334
 msgid ""
 "The mobile push notification service registration for your server has been "
 "deactivated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:343
+#: zerver/lib/exceptions.py:344
 msgid "Password authentication is disabled in this organization"
 msgstr ""
 
-#: zerver/lib/exceptions.py:352
+#: zerver/lib/exceptions.py:353
 msgid "Your password has been disabled and needs to be reset"
 msgstr ""
 
-#: zerver/lib/exceptions.py:369
+#: zerver/lib/exceptions.py:370
 msgid "Invalid API key"
 msgstr "無效的 API key"
 
-#: zerver/lib/exceptions.py:376
+#: zerver/lib/exceptions.py:377
 msgid "Malformed API key"
 msgstr ""
 
-#: zerver/lib/exceptions.py:416
+#: zerver/lib/exceptions.py:417
 #, python-brace-format
 msgid ""
 "The '{event_type}' event isn't currently supported by the {webhook_name} "
 "webhook; ignoring"
 msgstr ""
 
-#: zerver/lib/exceptions.py:436
+#: zerver/lib/exceptions.py:437
 #, python-brace-format
 msgid "Unable to parse request: Did {webhook_name} generate this event?"
 msgstr ""
 
-#: zerver/lib/exceptions.py:463
+#: zerver/lib/exceptions.py:464
 msgid "User not authenticated"
 msgstr ""
 
-#: zerver/lib/exceptions.py:476 zerver/views/auth.py:743
+#: zerver/lib/exceptions.py:477 zerver/views/auth.py:743
 #: zerver/views/auth.py:1078 zerver/views/auth.py:1142
 msgid "Invalid subdomain"
 msgstr "無效的子域名"
 
-#: zerver/lib/exceptions.py:517
+#: zerver/lib/exceptions.py:518
 msgid "Access denied"
 msgstr "存取已拒絕"
 
-#: zerver/lib/exceptions.py:557
+#: zerver/lib/exceptions.py:558
 #, python-brace-format
 msgid ""
 "You only have permission to move the "
@@ -4002,47 +4564,47 @@ msgid ""
 "messages in this topic."
 msgstr ""
 
-#: zerver/lib/exceptions.py:570
+#: zerver/lib/exceptions.py:571
 msgid "Reaction already exists."
 msgstr ""
 
-#: zerver/lib/exceptions.py:582
+#: zerver/lib/exceptions.py:583
 msgid "Reaction doesn't exist."
 msgstr ""
 
-#: zerver/lib/exceptions.py:607
+#: zerver/lib/exceptions.py:608
 msgid ""
 "Your organization is registered to a different Zulip server. Please contact "
 "Zulip support for assistance in resolving this issue."
 msgstr ""
 
-#: zerver/lib/exceptions.py:621
+#: zerver/lib/exceptions.py:622
 msgid "Organization not registered"
 msgstr ""
 
-#: zerver/lib/exceptions.py:633
+#: zerver/lib/exceptions.py:634
 msgid ""
 "You do not have permission to use stream wildcard mentions in this stream."
 msgstr ""
 
-#: zerver/lib/exceptions.py:645
+#: zerver/lib/exceptions.py:646
 msgid ""
 "You do not have permission to use topic wildcard mentions in this topic."
 msgstr ""
 
-#: zerver/lib/external_accounts.py:36
+#: zerver/lib/external_accounts.py:37
 msgid "Twitter username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:42
+#: zerver/lib/external_accounts.py:43
 msgid "GitHub username"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:71
+#: zerver/lib/external_accounts.py:72
 msgid "Custom external account must define URL pattern"
 msgstr ""
 
-#: zerver/lib/external_accounts.py:73
+#: zerver/lib/external_accounts.py:74
 msgid "Invalid external account type"
 msgstr "無效的外部帳號類型"
 
@@ -4140,106 +4702,106 @@ msgstr ""
 msgid "Version control"
 msgstr "版本控制"
 
-#: zerver/lib/message.py:234
+#: zerver/lib/message.py:201
 msgid "Message must not be empty"
 msgstr "訊息不能為空"
 
-#: zerver/lib/message.py:236
+#: zerver/lib/message.py:203
 msgid "Message must not contain null bytes"
 msgstr "訊息不可包含 null bytes"
 
-#: zerver/lib/message.py:1766
+#: zerver/lib/message.py:1198 zerver/lib/message.py:1205
 #, python-brace-format
 msgid ""
 "You are not allowed to mention user group '{user_group_name}'. You must be a"
 " member of '{can_mention_group_name}' to mention this group."
 msgstr ""
 
-#: zerver/lib/narrow.py:109
+#: zerver/lib/narrow.py:104
 #, python-brace-format
 msgid "Operator {operator} not supported."
 msgstr ""
 
-#: zerver/lib/narrow.py:209
+#: zerver/lib/narrow.py:203
 #, python-brace-format
 msgid "Invalid narrow operator: {desc}"
 msgstr "無效的範圍操作:{desc}"
 
-#: zerver/lib/narrow.py:1105
+#: zerver/lib/narrow.py:1099
 msgid "Missing 'anchor' argument."
 msgstr "缺少 'anchor' 參數."
 
-#: zerver/lib/narrow.py:1125
+#: zerver/lib/narrow.py:1119
 msgid "Invalid anchor"
 msgstr "無效的錨點"
 
-#: zerver/lib/onboarding.py:57
+#: zerver/lib/onboarding.py:58
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Using Zulip for a class "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:64
+#: zerver/lib/onboarding.py:65
 #, python-brace-format
 msgid ""
 "If you are new to Zulip, check out our [Getting started "
 "guide]({getting_started_url})!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:76
+#: zerver/lib/onboarding.py:77
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up Zulip for a "
 "class]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:86
+#: zerver/lib/onboarding.py:87
 #, python-brace-format
 msgid ""
 "We also have a guide for [Setting up your "
 "organization]({organization_setup_url})."
 msgstr ""
 
-#: zerver/lib/onboarding.py:96
+#: zerver/lib/onboarding.py:97
 #, python-brace-format
 msgid ""
 "Note that this is a [demo organization]({demo_organization_help_url}) and "
 "will be **automatically deleted** in 30 days."
 msgstr ""
 
-#: zerver/lib/onboarding.py:104
+#: zerver/lib/onboarding.py:105
 msgid "Hello, and welcome to Zulip!"
 msgstr "嗨,歡迎來到 Zulip!"
 
-#: zerver/lib/onboarding.py:105
+#: zerver/lib/onboarding.py:106
 msgid "This is a direct message from me, Welcome Bot."
 msgstr ""
 
-#: zerver/lib/onboarding.py:110
+#: zerver/lib/onboarding.py:111
 msgid ""
 "I can also help you get set up! Just click anywhere on this message or press"
 " `r` to reply."
 msgstr ""
 
-#: zerver/lib/onboarding.py:113 zerver/lib/onboarding.py:225
+#: zerver/lib/onboarding.py:114 zerver/lib/onboarding.py:226
 msgid "Here are a few messages I understand:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:154
+#: zerver/lib/onboarding.py:155
 msgid ""
 "You can [download](/apps/) the [mobile and desktop apps](/apps/). Zulip also"
 " works great in a browser."
 msgstr ""
 
-#: zerver/lib/onboarding.py:159
+#: zerver/lib/onboarding.py:160
 msgid ""
 "Go to [Profile settings](#settings/profile) to add a [profile "
 "picture](/help/change-your-profile-picture) and edit your [profile "
 "information](/help/edit-your-profile)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:165
+#: zerver/lib/onboarding.py:166
 msgid ""
 "Go to [Preferences](#settings/preferences) to [switch between the light and "
 "dark themes](/help/dark-theme), [pick your favorite emoji "
@@ -4248,119 +4810,119 @@ msgid ""
 "experience."
 msgstr ""
 
-#: zerver/lib/onboarding.py:175
+#: zerver/lib/onboarding.py:176
 msgid ""
 "In Zulip, streams [determine who gets a message](/help/streams-and-topics). "
 "They are similar to channels in other chat apps."
 msgstr ""
 
-#: zerver/lib/onboarding.py:179
+#: zerver/lib/onboarding.py:180
 msgid "[Browse and subscribe to streams](#streams/all)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:186
+#: zerver/lib/onboarding.py:187
 msgid ""
 "In Zulip, topics [tell you what a message is about](/help/streams-and-"
 "topics). They are light-weight subjects, very similar to the subject line of"
 " an email."
 msgstr ""
 
-#: zerver/lib/onboarding.py:191
+#: zerver/lib/onboarding.py:192
 msgid ""
 "Check out [Recent conversations](#recent) to see what's happening! You can "
 "return to this conversation by clicking \"Direct messages\" in the upper "
 "left."
 msgstr ""
 
-#: zerver/lib/onboarding.py:200
+#: zerver/lib/onboarding.py:201
 msgid ""
 "Zulip's [keyboard shortcuts](#keyboard-shortcuts) let you navigate the app "
 "quickly and efficiently."
 msgstr ""
 
-#: zerver/lib/onboarding.py:204
+#: zerver/lib/onboarding.py:205
 msgid "Press `?` any time to see a [cheat sheet](#keyboard-shortcuts)."
 msgstr ""
 
-#: zerver/lib/onboarding.py:211
+#: zerver/lib/onboarding.py:212
 msgid ""
 "Zulip uses [Markdown](/help/format-your-message-using-markdown), an "
 "intuitive format for **bold**, *italics*, bulleted lists, and more. Click "
 "[here](#message-formatting) for a cheat sheet."
 msgstr ""
 
-#: zerver/lib/onboarding.py:217
+#: zerver/lib/onboarding.py:218
 msgid ""
 "Check out our [messaging tips](/help/messaging-tips) to learn about emoji "
 "reactions, code blocks and much more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:228
+#: zerver/lib/onboarding.py:229
 msgid ""
 "Check out our [Getting started guide](/help/getting-started-with-zulip), or "
 "browse the [Help center](/help/) to learn more!"
 msgstr ""
 
-#: zerver/lib/onboarding.py:237
+#: zerver/lib/onboarding.py:238
 msgid ""
 "I’m sorry, I did not understand your message. Please try one of the "
 "following commands:"
 msgstr ""
 
-#: zerver/lib/onboarding.py:270
+#: zerver/lib/onboarding.py:271
 msgid ""
 "This is a private stream, as indicated by the lock icon next to the stream "
 "name."
 msgstr "這是私人串流,可以由串流名稱旁的鎖定圖示看出來。"
 
-#: zerver/lib/onboarding.py:272
+#: zerver/lib/onboarding.py:273
 msgid "Private streams are only visible to stream members."
 msgstr "私人串流只有該串流成員可見"
 
-#: zerver/lib/onboarding.py:276
+#: zerver/lib/onboarding.py:277
 #, python-brace-format
 msgid ""
 "To manage this stream, go to [Stream settings]({stream_settings_url}) and "
 "click on `{initial_private_stream_name}`."
 msgstr "管理此串流,至 [串流設定]({stream_settings_url}) 點擊 `{initial_private_stream_name}`。"
 
-#: zerver/lib/onboarding.py:286
+#: zerver/lib/onboarding.py:287
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `topic demonstration`."
 msgstr "這是一則訊息在串流 #**{default_notification_stream_name}** 與主題 `topic demonstration`."
 
-#: zerver/lib/onboarding.py:292
+#: zerver/lib/onboarding.py:293
 msgid "Topics are a lightweight tool to keep conversations organized."
 msgstr "主題是一個輕量化的工具,可以持續有系統的對談。"
 
-#: zerver/lib/onboarding.py:294
+#: zerver/lib/onboarding.py:295
 #, python-brace-format
 msgid ""
 "You can learn more about topics at [Streams and "
 "topics]({about_topics_help_url})."
 msgstr "您可在[串流跟主題]({about_topics_help_url})學習更多有關於主題的事項。"
 
-#: zerver/lib/onboarding.py:299
+#: zerver/lib/onboarding.py:300
 #, python-brace-format
 msgid ""
 "This is a message on stream #**{default_notification_stream_name}** with the"
 " topic `swimming turtles`."
 msgstr "者是一則訊息在串流 #**{default_notification_stream_name}** 與主題 `swimming turtles`."
 
-#: zerver/lib/onboarding.py:308
+#: zerver/lib/onboarding.py:309
 #, python-brace-format
 msgid ""
 "[Start a new topic]({start_topic_help_url}) any time you're not replying to "
 "a             previous message."
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:323
+#: zerver/lib/outgoing_webhook.py:318
 msgid "Invalid JSON in response"
 msgstr ""
 
-#: zerver/lib/outgoing_webhook.py:332
+#: zerver/lib/outgoing_webhook.py:327
 msgid "Invalid response format"
 msgstr ""
 
@@ -4374,45 +4936,45 @@ msgid "Invalid GCM options to bouncer: {options}"
 msgstr ""
 
 #. error
-#: zerver/lib/push_notifications.py:731 zilencer/views.py:234
+#: zerver/lib/push_notifications.py:752 zilencer/views.py:297
 msgid "Token does not exist"
 msgstr "Token 不存在"
 
-#: zerver/lib/push_notifications.py:902
+#: zerver/lib/push_notifications.py:926
 msgid ""
 "This organization has disabled including message content in mobile push "
 "notifications"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1015
+#: zerver/lib/push_notifications.py:1039
 #, python-brace-format
 msgid "{full_name} mentioned @{user_group_name}:"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1019
+#: zerver/lib/push_notifications.py:1043
 #, python-brace-format
 msgid "{full_name} mentioned you:"
 msgstr "{full_name} 提到你:"
 
-#: zerver/lib/push_notifications.py:1026
+#: zerver/lib/push_notifications.py:1050
 #, python-brace-format
 msgid "{full_name} mentioned everyone:"
 msgstr "{full_name} 提到所有人:"
 
-#: zerver/lib/push_notifications.py:1436
+#: zerver/lib/push_notifications.py:1454
 msgid "Test notification"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1437
+#: zerver/lib/push_notifications.py:1455
 #, python-brace-format
 msgid "This is a test notification from {realm_name} ({realm_uri})."
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1488
+#: zerver/lib/push_notifications.py:1507
 msgid "Device not recognized"
 msgstr ""
 
-#: zerver/lib/push_notifications.py:1500
+#: zerver/lib/push_notifications.py:1519
 msgid "Device not recognized by the push bouncer"
 msgstr ""
 
@@ -4424,23 +4986,23 @@ msgstr ""
 msgid "Recipient list may only contain user IDs"
 msgstr ""
 
-#: zerver/lib/recipient_users.py:29 zerver/lib/streams.py:281
+#: zerver/lib/recipient_users.py:31 zerver/lib/streams.py:281
 #: zerver/lib/streams.py:289 zerver/lib/streams.py:896
-#: zerver/tornado/views.py:167 zerver/views/events_register.py:97
-#: zerver/views/message_send.py:177 zerver/views/message_send.py:198
+#: zerver/tornado/views.py:198 zerver/views/events_register.py:97
+#: zerver/views/message_send.py:178 zerver/views/message_send.py:199
 msgid "User not authorized for this query"
 msgstr "使用者此查詢未授權"
 
-#: zerver/lib/recipient_users.py:75
+#: zerver/lib/recipient_users.py:77
 #, python-brace-format
 msgid "'{email}' is no longer using Zulip."
 msgstr "'{email}' 沒再使用 Zulip。"
 
-#: zerver/lib/recipient_users.py:82
+#: zerver/lib/recipient_users.py:84
 msgid "You can't send direct messages outside of your organization."
 msgstr ""
 
-#: zerver/lib/remote_server.py:185
+#: zerver/lib/remote_server.py:186
 #, python-brace-format
 msgid "Push notifications bouncer error: {error}"
 msgstr ""
@@ -4460,21 +5022,21 @@ msgstr "缺少 '{var_name}' 參數"
 msgid "Bad value for '{var_name}': {bad_value}"
 msgstr ""
 
-#: zerver/lib/request.py:398 zerver/lib/typed_endpoint.py:493
+#: zerver/lib/request.py:393 zerver/lib/typed_endpoint.py:493
 #: zerver/webhooks/ifttt/view.py:37 zerver/webhooks/slack_incoming/view.py:44
 msgid "Malformed payload"
 msgstr ""
 
-#: zerver/lib/request.py:447
+#: zerver/lib/request.py:442
 #, python-brace-format
 msgid "Argument \"{name}\" is not valid JSON."
 msgstr ""
 
-#: zerver/lib/scheduled_messages.py:20
+#: zerver/lib/scheduled_messages.py:19
 msgid "Scheduled message does not exist"
 msgstr ""
 
-#: zerver/lib/send_email.py:76
+#: zerver/lib/send_email.py:79
 #, python-brace-format
 msgid "{service_name} account security"
 msgstr ""
@@ -4511,7 +5073,7 @@ msgstr "請選擇其一: 'stream' or 'stream_id'."
 
 #: zerver/lib/streams.py:330 zerver/lib/streams.py:349
 #: zerver/lib/streams.py:432 zerver/lib/streams.py:500
-#: zerver/views/streams.py:391 zerver/views/user_topics.py:101
+#: zerver/views/streams.py:393 zerver/views/user_topics.py:102
 msgid "Invalid stream ID"
 msgstr ""
 
@@ -4525,7 +5087,7 @@ msgstr ""
 msgid "Invalid stream name '{stream_name}'"
 msgstr ""
 
-#: zerver/lib/streams.py:749 zerver/views/streams.py:307
+#: zerver/lib/streams.py:749 zerver/views/streams.py:309
 msgid "A default stream cannot be private."
 msgstr ""
 
@@ -4534,7 +5096,7 @@ msgstr ""
 msgid "Stream(s) ({stream_names}) do not exist"
 msgstr ""
 
-#: zerver/lib/streams.py:762 zerver/views/streams.py:320
+#: zerver/lib/streams.py:762 zerver/views/streams.py:322
 msgid "Web-public streams are not enabled."
 msgstr ""
 
@@ -4566,28 +5128,28 @@ msgstr ""
 msgid "Invalid character in topic, at position {position}!"
 msgstr ""
 
-#: zerver/lib/subscription_info.py:324
+#: zerver/lib/subscription_info.py:325
 msgid "Subscriber data is not available for this stream"
 msgstr "此串流訂閱者資料不可用"
 
-#: zerver/lib/subscription_info.py:331
+#: zerver/lib/subscription_info.py:332
 msgid "Unable to retrieve subscribers for private stream"
 msgstr "無法取得該私人串流的訂閱者"
 
 #: zerver/lib/typed_endpoint.py:313 zerver/lib/typed_endpoint.py:314
-#: zerver/lib/validator.py:206
+#: zerver/lib/validator.py:207
 #, python-brace-format
 msgid "{var_name} is not a boolean"
 msgstr "{var_name} 不是 boolean"
 
 #: zerver/lib/typed_endpoint.py:315 zerver/lib/typed_endpoint.py:316
-#: zerver/lib/validator.py:158 zerver/lib/validator.py:160
+#: zerver/lib/validator.py:159 zerver/lib/validator.py:161
 #, python-brace-format
 msgid "{var_name} is not a date"
 msgstr "{var_name} 不是 date"
 
-#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:287
-#: zerver/lib/validator.py:687
+#: zerver/lib/typed_endpoint.py:317 zerver/lib/validator.py:282
+#: zerver/lib/validator.py:682
 #, python-brace-format
 msgid "{var_name} is not a dict"
 msgstr "{var_name} 不是 dict"
@@ -4598,18 +5160,18 @@ msgid "Argument \"{argument}\" at {var_name} is unexpected"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:319 zerver/lib/typed_endpoint.py:320
-#: zerver/lib/validator.py:200
+#: zerver/lib/validator.py:201
 #, python-brace-format
 msgid "{var_name} is not a float"
 msgstr "{var_name} 不是 float"
 
-#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:190
+#: zerver/lib/typed_endpoint.py:321 zerver/lib/validator.py:191
 #, python-brace-format
 msgid "{var_name} is too small"
 msgstr ""
 
 #: zerver/lib/typed_endpoint.py:322 zerver/lib/typed_endpoint.py:323
-#: zerver/lib/validator.py:166
+#: zerver/lib/validator.py:167
 #, python-brace-format
 msgid "{var_name} is not an integer"
 msgstr "{var_name} 不是 integer"
@@ -4619,24 +5181,24 @@ msgstr "{var_name} 不是 integer"
 msgid "{var_name} is not valid JSON"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:192
+#: zerver/lib/typed_endpoint.py:326 zerver/lib/validator.py:193
 #, python-brace-format
 msgid "{var_name} is too large"
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:236
-#: zerver/lib/validator.py:684
+#: zerver/lib/typed_endpoint.py:327 zerver/lib/validator.py:237
+#: zerver/lib/validator.py:679
 #, python-brace-format
 msgid "{var_name} is not a list"
 msgstr "{var_name} 不是 list"
 
-#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:94
-#: zerver/lib/validator.py:179
+#: zerver/lib/typed_endpoint.py:328 zerver/lib/validator.py:95
+#: zerver/lib/validator.py:180
 #, python-brace-format
 msgid "Invalid {var_name}"
 msgstr "無效的 {var_name}"
 
-#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:109
+#: zerver/lib/typed_endpoint.py:329 zerver/lib/validator.py:110
 #, python-brace-format
 msgid "{var_name} is too long (limit: {max_length} characters)"
 msgstr "{var_name} 過長(限制:{max_length} 字元)"
@@ -4646,8 +5208,8 @@ msgstr "{var_name} 過長(限制:{max_length} 字元)"
 msgid "{var_name} is too short."
 msgstr ""
 
-#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:79
-#: zerver/lib/validator.py:152
+#: zerver/lib/typed_endpoint.py:331 zerver/lib/validator.py:80
+#: zerver/lib/validator.py:153
 #, python-brace-format
 msgid "{var_name} is not a string"
 msgstr "{var_name} 不是個字串"
@@ -4666,21 +5228,21 @@ msgstr ""
 msgid "Upload would exceed your organization's upload quota."
 msgstr ""
 
-#: zerver/lib/upload/base.py:70 zerver/lib/upload/base.py:86
-#: zerver/lib/upload/base.py:180
+#: zerver/lib/upload/base.py:71 zerver/lib/upload/base.py:87
+#: zerver/lib/upload/base.py:181
 msgid "Could not decode image; did you upload an image file?"
 msgstr ""
 
-#: zerver/lib/upload/base.py:72 zerver/lib/upload/base.py:88
-#: zerver/lib/upload/base.py:182
+#: zerver/lib/upload/base.py:73 zerver/lib/upload/base.py:89
+#: zerver/lib/upload/base.py:183
 msgid "Image size exceeds limit."
 msgstr "圖檔超過限制大小"
 
-#: zerver/lib/upload/base.py:110
+#: zerver/lib/upload/base.py:111
 msgid "Corrupt animated image."
 msgstr ""
 
-#: zerver/lib/upload/base.py:119
+#: zerver/lib/upload/base.py:120
 msgid "Unknown animated image format."
 msgstr ""
 
@@ -4737,161 +5299,161 @@ msgstr ""
 msgid "User group name cannot start with '{prefix}'."
 msgstr ""
 
-#: zerver/lib/users.py:54
+#: zerver/lib/users.py:56
 msgid "Name too long!"
 msgstr "名稱過長!"
 
-#: zerver/lib/users.py:56
+#: zerver/lib/users.py:58
 msgid "Name too short!"
 msgstr "名稱過短!"
 
-#: zerver/lib/users.py:59
+#: zerver/lib/users.py:61
 msgid "Invalid characters in name!"
 msgstr "無效的字元在名稱裡!"
 
-#: zerver/lib/users.py:65
+#: zerver/lib/users.py:67
 msgid "Invalid format!"
 msgstr "無效的格式!"
 
-#: zerver/lib/users.py:81
+#: zerver/lib/users.py:83
 msgid "Name is already in use!"
 msgstr "名稱已被使用!"
 
-#: zerver/lib/users.py:87 zerver/views/users.py:504 zerver/views/users.py:517
+#: zerver/lib/users.py:89 zerver/views/users.py:504 zerver/views/users.py:517
 #: zerver/views/users.py:701
 msgid "Bad name or username"
 msgstr "無效的名稱或使用者名稱"
 
-#: zerver/lib/users.py:105
+#: zerver/lib/users.py:107
 #, python-brace-format
 msgid "Invalid integration '{integration_name}'."
 msgstr ""
 
-#: zerver/lib/users.py:111
+#: zerver/lib/users.py:113
 #, python-brace-format
 msgid "Missing configuration parameters: {keys}"
 msgstr ""
 
-#: zerver/lib/users.py:121
+#: zerver/lib/users.py:123
 #, python-brace-format
 msgid "Invalid {key} value {value} ({error})"
 msgstr ""
 
-#: zerver/lib/users.py:139
+#: zerver/lib/users.py:141
 msgid "Invalid configuration data!"
 msgstr "無效的設定資料!"
 
-#: zerver/lib/users.py:173
+#: zerver/lib/users.py:175
 msgid "Invalid bot type"
 msgstr "無效的機器人類型"
 
-#: zerver/lib/users.py:178
+#: zerver/lib/users.py:180
 msgid "Invalid interface type"
 msgstr "無效的介面類型"
 
-#: zerver/lib/users.py:217 zerver/models.py:4978
+#: zerver/lib/users.py:219 zerver/models/custom_profile_fields.py:46
 #, python-brace-format
 msgid "Invalid user ID: {user_id}"
 msgstr ""
 
-#: zerver/lib/users.py:226 zerver/lib/users.py:228
+#: zerver/lib/users.py:228 zerver/lib/users.py:230
 msgid "No such bot"
 msgstr "無此機器人"
 
-#: zerver/lib/users.py:252 zerver/lib/users.py:283 zerver/lib/users.py:300
-#: zerver/lib/users.py:316 zerver/views/presence.py:47
+#: zerver/lib/users.py:254 zerver/lib/users.py:285 zerver/lib/users.py:302
+#: zerver/lib/users.py:318 zerver/views/presence.py:41
 msgid "No such user"
 msgstr "無此使用者"
 
-#: zerver/lib/users.py:254
+#: zerver/lib/users.py:256
 msgid "User is deactivated"
 msgstr "使用者已停用"
 
-#: zerver/lib/validator.py:86
+#: zerver/lib/validator.py:87
 #, python-brace-format
 msgid "{item} cannot be blank."
 msgstr "{item} 不能是空白。"
 
-#: zerver/lib/validator.py:124
+#: zerver/lib/validator.py:125
 #, python-brace-format
 msgid "{var_name} has incorrect length {length}; should be {target_length}"
 msgstr "{var_name} 是不正確的長度 {length}; 應為 {target_length}"
 
-#: zerver/lib/validator.py:145
+#: zerver/lib/validator.py:146
 #, python-brace-format
 msgid "{var_name} is not a recognized time zone"
 msgstr ""
 
-#: zerver/lib/validator.py:216
+#: zerver/lib/validator.py:217
 #, python-brace-format
 msgid "{var_name} is not a valid hex color code"
 msgstr "{var_name} 不是有效的 hex color code"
 
-#: zerver/lib/validator.py:240
+#: zerver/lib/validator.py:241
 #, python-brace-format
 msgid "{container} should have exactly {length} items"
 msgstr "{container} 應有 {length} items"
 
-#: zerver/lib/validator.py:295
+#: zerver/lib/validator.py:290
 #, python-brace-format
 msgid "{key_name} key is missing from {var_name}"
 msgstr "在 {var_name} 裡缺少 key {key_name}"
 
-#: zerver/lib/validator.py:320
+#: zerver/lib/validator.py:315
 #, python-brace-format
 msgid "Unexpected arguments: {keys}"
 msgstr ""
 
-#: zerver/lib/validator.py:353
+#: zerver/lib/validator.py:348
 #, python-brace-format
 msgid "{var_name} is not an allowed_type"
 msgstr "{var_name} 不是 allowed_type"
 
-#: zerver/lib/validator.py:362
+#: zerver/lib/validator.py:357
 #, python-brace-format
 msgid "{variable} != {expected_value} ({value} is wrong)"
 msgstr "{variable} != {expected_value} ({value} 是錯的)"
 
-#: zerver/lib/validator.py:389 zerver/lib/validator.py:403
+#: zerver/lib/validator.py:384 zerver/lib/validator.py:398
 #, python-brace-format
 msgid "{var_name} is not a URL"
 msgstr "{var_name} 不是 URL"
 
-#: zerver/lib/validator.py:412
+#: zerver/lib/validator.py:407
 #, python-format
 msgid "URL pattern must contain '%(username)s'."
 msgstr ""
 
-#: zerver/lib/validator.py:436
+#: zerver/lib/validator.py:431
 #, python-brace-format
 msgid "'{item}' cannot be blank."
 msgstr "'{item}' 不能是空白。"
 
-#: zerver/lib/validator.py:445
+#: zerver/lib/validator.py:440
 msgid "Field must not have duplicate choices."
 msgstr ""
 
-#: zerver/lib/validator.py:458
+#: zerver/lib/validator.py:453
 #, python-brace-format
 msgid "'{value}' is not a valid choice for '{field_name}'."
 msgstr "'{value}' 對於 '{field_name}' 不是有效的選擇。"
 
-#: zerver/lib/validator.py:636
+#: zerver/lib/validator.py:631
 #, python-brace-format
 msgid "{var_name} is not a string or an integer list"
 msgstr "{var_name} 不是 string 或 integer list"
 
-#: zerver/lib/validator.py:646
+#: zerver/lib/validator.py:641
 #, python-brace-format
 msgid "{var_name} is not a string or integer"
 msgstr "{var_name} 不是 string 或 integer"
 
-#: zerver/lib/validator.py:675
+#: zerver/lib/validator.py:670
 #, python-brace-format
 msgid "{var_name} does not have a length"
 msgstr ""
 
-#: zerver/lib/validator.py:735 zerver/lib/validator.py:757
+#: zerver/lib/validator.py:730 zerver/lib/validator.py:752
 #, python-brace-format
 msgid "{var_name} is missing"
 msgstr ""
@@ -4925,215 +5487,211 @@ msgstr ""
 msgid "Reverse proxy misconfiguration: {proxy_reason}"
 msgstr ""
 
-#: zerver/models.py:556
-msgid "stream events"
-msgstr "串流事件"
-
-#: zerver/models.py:687
-msgid "Available on Zulip Cloud Standard. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:688
-msgid "Available on Zulip Cloud Plus. Upgrade to access."
-msgstr ""
-
-#: zerver/models.py:758
-msgid "GIPHY integration disabled"
-msgstr ""
-
-#: zerver/models.py:763
-msgid "Allow GIFs rated Y (Very young audience)"
-msgstr ""
-
-#: zerver/models.py:767
-msgid "Allow GIFs rated G (General audience)"
-msgstr ""
-
-#: zerver/models.py:771
-msgid "Allow GIFs rated PG (Parental guidance)"
-msgstr ""
-
-#: zerver/models.py:775
-msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
-msgstr ""
-
-#: zerver/models.py:779
-msgid "Allow GIFs rated R (Restricted)"
-msgstr ""
-
-#: zerver/models.py:1230
-msgid "Invalid characters in emoji name"
-msgstr "表情符號名稱中有無效的字元"
-
-#: zerver/models.py:1343 zerver/models.py:1346
-#, python-brace-format
-msgid "Bad regular expression: {regex}"
-msgstr ""
-
-#: zerver/models.py:1348
-msgid "Unknown regular expression error"
-msgstr ""
-
-#: zerver/models.py:1356
-msgid "Invalid URL template."
-msgstr ""
-
-#: zerver/models.py:1405
-#, python-format
-msgid "Group %(name)r in URL template is not present in linkifier pattern."
-msgstr ""
-
-#: zerver/models.py:1417
-#, python-format
-msgid "Group %(name)r in linkifier pattern is not present in URL template."
-msgstr ""
-
-#: zerver/models.py:1471 zerver/views/realm_playgrounds.py:24
-msgid "Invalid characters in pygments language"
-msgstr ""
-
-#: zerver/models.py:1503
-msgid "Missing the required variable \"code\" in the URL template"
-msgstr ""
-
-#: zerver/models.py:1508
-msgid "\"code\" should be the only variable present in the URL template"
-msgstr ""
-
-#: zerver/models.py:1795
-msgid "Admins, moderators, members and guests"
-msgstr ""
-
-#: zerver/models.py:1796
-msgid "Admins, moderators and members"
-msgstr ""
-
-#: zerver/models.py:1797
-msgid "Admins and moderators"
-msgstr ""
-
-#: zerver/models.py:1798
-msgid "Admins only"
-msgstr "只允許管理者"
-
-#: zerver/models.py:1799
-msgid "Nobody"
-msgstr "沒有人"
-
-#: zerver/models.py:1961
-msgid "Unknown user"
-msgstr ""
-
-#: zerver/models.py:2117
-msgid "Organization owner"
-msgstr ""
-
-#: zerver/models.py:2118
-msgid "Organization administrator"
-msgstr ""
-
-#: zerver/models.py:2119
-msgid "Moderator"
-msgstr ""
-
-#: zerver/models.py:2120
-msgid "Member"
-msgstr "成員"
-
-#: zerver/models.py:2121
-msgid "Guest"
-msgstr "訪客"
-
-#: zerver/models.py:2709
-msgid "Web-public"
-msgstr ""
-
-#: zerver/models.py:2715
-msgid "Public"
-msgstr "公開"
-
-#: zerver/models.py:2721
-msgid "Private, shared history"
-msgstr ""
-
-#: zerver/models.py:2727
-msgid "Private, protected history"
-msgstr ""
-
-#: zerver/models.py:2735
-msgid "Public, protected history"
-msgstr ""
-
-#: zerver/models.py:2755
-msgid "All stream members can post"
-msgstr "所有串流成員都可發表"
-
-#: zerver/models.py:2756
-msgid "Only organization administrators can post"
-msgstr "只有組織管理者可以發表"
-
-#: zerver/models.py:2758
-msgid "Only organization administrators and moderators can post"
-msgstr ""
-
-#: zerver/models.py:2761
-msgid "Only organization full members can post"
-msgstr "只有組織成員可以發表"
-
-#: zerver/models.py:3446
-msgid "Unicode emoji"
-msgstr "Unicode 表情符號"
-
-#: zerver/models.py:3447
-msgid "Custom emoji"
-msgstr "自定義表情符號"
-
-#: zerver/models.py:3448
-msgid "Zulip extra emoji"
-msgstr "Zulip 額外的表情符號"
-
-#: zerver/models.py:4982
+#: zerver/models/custom_profile_fields.py:50
 #, python-brace-format
 msgid "User with ID {user_id} is deactivated"
 msgstr ""
 
-#: zerver/models.py:4986
+#: zerver/models/custom_profile_fields.py:54
 #, python-brace-format
 msgid "User with ID {user_id} is a bot"
 msgstr ""
 
-#: zerver/models.py:5026
+#: zerver/models/custom_profile_fields.py:94
 msgid "List of options"
 msgstr ""
 
-#: zerver/models.py:5029
-msgid "Person picker"
+#: zerver/models/custom_profile_fields.py:109
+msgid "Text (short)"
 msgstr ""
 
-#: zerver/models.py:5041
-msgid "Short text"
+#: zerver/models/custom_profile_fields.py:110
+msgid "Text (long)"
 msgstr ""
 
-#: zerver/models.py:5042
-msgid "Long text"
+#: zerver/models/custom_profile_fields.py:111
+msgid "Date"
 msgstr ""
 
-#: zerver/models.py:5043
-msgid "Date picker"
-msgstr "日期選擇器"
-
-#: zerver/models.py:5044
+#: zerver/models/custom_profile_fields.py:112
 msgid "Link"
 msgstr "連結"
 
-#: zerver/models.py:5047
+#: zerver/models/custom_profile_fields.py:115
 msgid "External account"
 msgstr ""
 
-#: zerver/models.py:5052
+#: zerver/models/custom_profile_fields.py:120
 msgid "Pronouns"
 msgstr ""
 
+#: zerver/models/linkifiers.py:32 zerver/models/linkifiers.py:35
+#, python-brace-format
+msgid "Bad regular expression: {regex}"
+msgstr ""
+
+#: zerver/models/linkifiers.py:37
+msgid "Unknown regular expression error"
+msgstr ""
+
+#: zerver/models/linkifiers.py:45
+msgid "Invalid URL template."
+msgstr ""
+
+#: zerver/models/linkifiers.py:94
+#, python-format
+msgid "Group %(name)r in URL template is not present in linkifier pattern."
+msgstr ""
+
+#: zerver/models/linkifiers.py:106
+#, python-format
+msgid "Group %(name)r in linkifier pattern is not present in URL template."
+msgstr ""
+
+#: zerver/models/messages.py:326
+msgid "Unicode emoji"
+msgstr "Unicode 表情符號"
+
+#: zerver/models/messages.py:327
+msgid "Custom emoji"
+msgstr "自定義表情符號"
+
+#: zerver/models/messages.py:328
+msgid "Zulip extra emoji"
+msgstr "Zulip 額外的表情符號"
+
+#: zerver/models/realm_emoji.py:42
+msgid "Invalid characters in emoji name"
+msgstr "表情符號名稱中有無效的字元"
+
+#: zerver/models/realm_playgrounds.py:38 zerver/views/realm_playgrounds.py:24
+msgid "Invalid characters in pygments language"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:70
+msgid "Missing the required variable \"code\" in the URL template"
+msgstr ""
+
+#: zerver/models/realm_playgrounds.py:75
+msgid "\"code\" should be the only variable present in the URL template"
+msgstr ""
+
+#: zerver/models/realms.py:337
+msgid "stream events"
+msgstr "串流事件"
+
+#: zerver/models/realms.py:468
+msgid "Available on Zulip Cloud Standard. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:469
+msgid "Available on Zulip Cloud Plus. Upgrade to access."
+msgstr ""
+
+#: zerver/models/realms.py:539
+msgid "GIPHY integration disabled"
+msgstr ""
+
+#: zerver/models/realms.py:544
+msgid "Allow GIFs rated Y (Very young audience)"
+msgstr ""
+
+#: zerver/models/realms.py:548
+msgid "Allow GIFs rated G (General audience)"
+msgstr ""
+
+#: zerver/models/realms.py:552
+msgid "Allow GIFs rated PG (Parental guidance)"
+msgstr ""
+
+#: zerver/models/realms.py:556
+msgid "Allow GIFs rated PG-13 (Parental guidance - under 13)"
+msgstr ""
+
+#: zerver/models/realms.py:560
+msgid "Allow GIFs rated R (Restricted)"
+msgstr ""
+
+#: zerver/models/streams.py:46
+msgid "Web-public"
+msgstr ""
+
+#: zerver/models/streams.py:52
+msgid "Public"
+msgstr "公開"
+
+#: zerver/models/streams.py:58
+msgid "Private, shared history"
+msgstr ""
+
+#: zerver/models/streams.py:64
+msgid "Private, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:72
+msgid "Public, protected history"
+msgstr ""
+
+#: zerver/models/streams.py:92
+msgid "All stream members can post"
+msgstr "所有串流成員都可發表"
+
+#: zerver/models/streams.py:93
+msgid "Only organization administrators can post"
+msgstr "只有組織管理者可以發表"
+
+#: zerver/models/streams.py:95
+msgid "Only organization administrators and moderators can post"
+msgstr ""
+
+#: zerver/models/streams.py:98
+msgid "Only organization full members can post"
+msgstr "只有組織成員可以發表"
+
+#: zerver/models/users.py:253
+msgid "Admins, moderators, members and guests"
+msgstr ""
+
+#: zerver/models/users.py:254
+msgid "Admins, moderators and members"
+msgstr ""
+
+#: zerver/models/users.py:255
+msgid "Admins and moderators"
+msgstr ""
+
+#: zerver/models/users.py:256
+msgid "Admins only"
+msgstr "只允許管理者"
+
+#: zerver/models/users.py:257
+msgid "Nobody"
+msgstr "沒有人"
+
+#: zerver/models/users.py:419
+msgid "Unknown user"
+msgstr ""
+
+#: zerver/models/users.py:575
+msgid "Organization owner"
+msgstr ""
+
+#: zerver/models/users.py:576
+msgid "Organization administrator"
+msgstr ""
+
+#: zerver/models/users.py:577
+msgid "Moderator"
+msgstr ""
+
+#: zerver/models/users.py:578
+msgid "Member"
+msgstr "成員"
+
+#: zerver/models/users.py:579
+msgid "Guest"
+msgstr "訪客"
+
 #: zerver/signals.py:105
 msgid "Unknown IP address"
 msgstr "未知的 IP 地址"
@@ -5146,20 +5704,20 @@ msgstr "未知的作業系統"
 msgid "An unknown browser"
 msgstr "未知的瀏覽器"
 
-#: zerver/tornado/event_queue.py:679
+#: zerver/tornado/event_queue.py:725
 msgid "Missing 'queue_id' argument"
 msgstr "缺少 'queue_id' 參數"
 
-#: zerver/tornado/event_queue.py:682
+#: zerver/tornado/event_queue.py:728
 msgid "Missing 'last_event_id' argument"
 msgstr "缺少 'last_event_id' 參數"
 
-#: zerver/tornado/event_queue.py:689
+#: zerver/tornado/event_queue.py:735
 #, python-brace-format
 msgid "An event newer than {event_id} has already been pruned!"
 msgstr ""
 
-#: zerver/tornado/event_queue.py:699
+#: zerver/tornado/event_queue.py:745
 #, python-brace-format
 msgid "Event {event_id} was not in this queue"
 msgstr ""
@@ -5197,41 +5755,41 @@ msgstr ""
 msgid "User-Agent header missing from request"
 msgstr "該請求缺少 User-Agent header"
 
-#: zerver/views/custom_profile_fields.py:52
+#: zerver/views/custom_profile_fields.py:53
 msgid "Label cannot be blank."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:66
+#: zerver/views/custom_profile_fields.py:67
 msgid "Field must have at least one choice."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:84
+#: zerver/views/custom_profile_fields.py:85
 msgid "Field type not supported for display in profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:113
+#: zerver/views/custom_profile_fields.py:114
 msgid "Invalid field type."
 msgstr "無效的欄位類型。"
 
-#: zerver/views/custom_profile_fields.py:160
-#: zerver/views/custom_profile_fields.py:222
+#: zerver/views/custom_profile_fields.py:161
+#: zerver/views/custom_profile_fields.py:223
 msgid "Only 2 custom profile fields can be displayed in the profile summary."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:185
-#: zerver/views/custom_profile_fields.py:250
+#: zerver/views/custom_profile_fields.py:186
+#: zerver/views/custom_profile_fields.py:251
 msgid "A field with that label already exists."
 msgstr ""
 
-#: zerver/views/custom_profile_fields.py:235
+#: zerver/views/custom_profile_fields.py:236
 msgid "Default custom field cannot be updated."
 msgstr "預設自定義欄位不能被更新。"
 
-#: zerver/views/development/dev_login.py:101
+#: zerver/views/development/dev_login.py:102
 msgid "Endpoint not available in production."
 msgstr ""
 
-#: zerver/views/development/dev_login.py:103
+#: zerver/views/development/dev_login.py:104
 msgid "DevAuthBackend not enabled."
 msgstr ""
 
@@ -5282,7 +5840,7 @@ msgstr ""
 msgid "Stream does not exist with id: {stream_id}. No invites were sent."
 msgstr ""
 
-#: zerver/views/invite.py:94
+#: zerver/views/invite.py:94 zerver/views/invite.py:231
 msgid "You do not have permission to subscribe other users to streams."
 msgstr ""
 
@@ -5331,19 +5889,19 @@ msgstr ""
 msgid "No such topic '{topic}'"
 msgstr ""
 
-#: zerver/views/message_send.py:196
+#: zerver/views/message_send.py:197
 msgid "Missing sender"
 msgstr "缺少發送者"
 
-#: zerver/views/message_send.py:203
+#: zerver/views/message_send.py:204
 msgid "Mirroring not allowed with recipient user IDs"
 msgstr "Mirroring not allowed with recipient 使用者 IDs"
 
-#: zerver/views/message_send.py:215 zerver/views/message_send.py:222
+#: zerver/views/message_send.py:216 zerver/views/message_send.py:223
 msgid "Invalid mirrored message"
 msgstr "無效的鏡像訊息"
 
-#: zerver/views/message_send.py:218
+#: zerver/views/message_send.py:219
 msgid "Zephyr mirroring is not allowed in this organization"
 msgstr ""
 
@@ -5359,42 +5917,46 @@ msgstr ""
 msgid "User is not muted"
 msgstr ""
 
-#: zerver/views/presence.py:50
+#: zerver/views/presence.py:44
 msgid "Presence is not supported for bot users."
 msgstr "機器人不支援 Presence。"
 
-#: zerver/views/presence.py:60
+#: zerver/views/presence.py:54
 #, python-brace-format
 msgid "No presence data for {user_id_or_email}"
 msgstr ""
 
-#: zerver/views/presence.py:96
+#: zerver/views/presence.py:90
 msgid "Client did not pass any new values."
 msgstr ""
 
-#: zerver/views/presence.py:119
+#: zerver/views/presence.py:113
 msgid ""
 "Client must pass emoji_name if they pass either emoji_code or reaction_type."
 msgstr ""
 
-#: zerver/views/presence.py:158
+#: zerver/views/presence.py:152
 #, python-brace-format
 msgid "Invalid status: {status}"
 msgstr ""
 
-#: zerver/views/push_notifications.py:42
+#: zerver/views/push_notifications.py:43
 msgid "Invalid app ID"
 msgstr ""
 
-#: zerver/views/push_notifications.py:48
+#: zerver/views/push_notifications.py:49
 msgid "Empty or invalid length token"
 msgstr "空或長度無效的 token"
 
-#: zerver/views/push_notifications.py:54
+#: zerver/views/push_notifications.py:55
 msgid "Invalid APNS token"
 msgstr "無效的 APNS token"
 
-#: zerver/views/push_notifications.py:171
+#: zerver/views/push_notifications.py:126
+msgid "Server doesn't use the push notification service"
+msgstr ""
+
+#: zerver/views/push_notifications.py:163
 #, python-brace-format
 msgid "Error returned by the bouncer: {result}"
 msgstr ""
@@ -5409,55 +5971,55 @@ msgstr "以下參數至少必須存在一個:emoji_name, emoji_code"
 msgid "Read receipts are disabled in this organization."
 msgstr ""
 
-#: zerver/views/realm.py:195
+#: zerver/views/realm.py:196
 #, python-brace-format
 msgid "Invalid language '{language}'"
 msgstr ""
 
-#: zerver/views/realm.py:200
+#: zerver/views/realm.py:203
 msgid "At least one authentication method must be enabled."
 msgstr ""
 
-#: zerver/views/realm.py:205
+#: zerver/views/realm.py:209
 #, python-brace-format
 msgid "Invalid video_chat_provider {video_chat_provider}"
 msgstr ""
 
-#: zerver/views/realm.py:213
+#: zerver/views/realm.py:217
 #, python-brace-format
 msgid "Invalid giphy_rating {giphy_rating}"
 msgstr ""
 
-#: zerver/views/realm.py:426
+#: zerver/views/realm.py:433
 msgid "Must be a demo organization."
 msgstr ""
 
-#: zerver/views/realm_domains.py:36
+#: zerver/views/realm_domains.py:37
 #, python-brace-format
 msgid "Invalid domain: {error}"
 msgstr ""
 
-#: zerver/views/realm_domains.py:39
+#: zerver/views/realm_domains.py:40
 #, python-brace-format
 msgid "The domain {domain} is already a part of your organization."
 msgstr "該域名 {domain} 已經是您組織的一部分。"
 
-#: zerver/views/realm_domains.py:59 zerver/views/realm_domains.py:72
+#: zerver/views/realm_domains.py:60 zerver/views/realm_domains.py:73
 #, python-brace-format
 msgid "No entry found for domain {domain}."
 msgstr "找不到域名 {domain} 的進入點。"
 
-#: zerver/views/realm_emoji.py:40
+#: zerver/views/realm_emoji.py:41
 msgid "You must upload exactly one file."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:42
+#: zerver/views/realm_emoji.py:43
 msgid "Only administrators can override default emoji."
 msgstr ""
 
-#: zerver/views/realm_emoji.py:48 zerver/views/realm_icon.py:27
-#: zerver/views/realm_logo.py:33 zerver/views/upload.py:319
-#: zerver/views/user_settings.py:419
+#: zerver/views/realm_emoji.py:49 zerver/views/realm_icon.py:27
+#: zerver/views/realm_logo.py:33 zerver/views/upload.py:320
+#: zerver/views/user_settings.py:415
 #, python-brace-format
 msgid "Uploaded file is larger than the allowed limit of {max_size} MiB"
 msgstr ""
@@ -5491,7 +6053,7 @@ msgstr ""
 msgid "You must upload exactly one icon."
 msgstr "您必須上傳至少一個圖示"
 
-#: zerver/views/realm_linkifiers.py:54 zerver/views/realm_linkifiers.py:77
+#: zerver/views/realm_linkifiers.py:55 zerver/views/realm_linkifiers.py:78
 msgid "Linkifier not found."
 msgstr ""
 
@@ -5519,71 +6081,71 @@ msgstr ""
 msgid "Invalid DSN"
 msgstr ""
 
-#: zerver/views/streams.py:141
+#: zerver/views/streams.py:143
 msgid "Private streams cannot be made default."
 msgstr ""
 
-#: zerver/views/streams.py:173
+#: zerver/views/streams.py:175
 msgid "You must pass \"new_description\" or \"new_group_name\"."
 msgstr "您必須傳 \"new_description\" 或 \"new_group_name\"."
 
-#: zerver/views/streams.py:203
+#: zerver/views/streams.py:205
 msgid "Invalid value for \"op\". Specify one of \"add\" or \"remove\"."
 msgstr "無效的 \"op\" 值。指定為 \"add\" 或 \"remove\"。"
 
-#: zerver/views/streams.py:362
+#: zerver/views/streams.py:364
 msgid "Stream already has that name!"
 msgstr "串流已經是該名稱!"
 
-#: zerver/views/streams.py:441 zerver/views/user_groups.py:169
-#: zerver/views/user_groups.py:366
+#: zerver/views/streams.py:443 zerver/views/user_groups.py:170
+#: zerver/views/user_groups.py:367
 msgid "Nothing to do. Specify at least one of \"add\" or \"delete\"."
 msgstr ""
 
-#: zerver/views/streams.py:525
+#: zerver/views/streams.py:527
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the stream {stream_name}."
 msgstr "{user_full_name} 已為您訂閱串流 {stream_name}."
 
-#: zerver/views/streams.py:531
+#: zerver/views/streams.py:533
 #, python-brace-format
 msgid "{user_full_name} subscribed you to the following streams:"
 msgstr "{user_full_name} 已為您訂閱串流:"
 
-#: zerver/views/streams.py:647
+#: zerver/views/streams.py:649
 #, python-brace-format
 msgid "Unable to access stream ({stream_name})."
 msgstr "無法存取串流 ({stream_name})."
 
-#: zerver/views/streams.py:660
+#: zerver/views/streams.py:662
 msgid "You can only invite other Zephyr mirroring users to private streams."
 msgstr "你只能邀請 Zephyr mirroring 使用者至私人串流。"
 
-#: zerver/views/streams.py:772
+#: zerver/views/streams.py:774
 #, python-brace-format
 msgid "{user_name} created the following streams: {stream_str}."
 msgstr "{user_name} 已創建串流:{stream_str}."
 
-#: zerver/views/streams.py:774
+#: zerver/views/streams.py:776
 #, python-brace-format
 msgid "{user_name} created a new stream {stream_str}."
 msgstr "{user_name} 已創建一個新串流 {stream_str}."
 
-#: zerver/views/streams.py:775
+#: zerver/views/streams.py:777
 msgid "new streams"
 msgstr "新串流"
 
-#: zerver/views/streams.py:807
+#: zerver/views/streams.py:811
 #, python-brace-format
 msgid "**{policy}** stream created by {user_name}. **Description:**"
 msgstr ""
 
-#: zerver/views/streams.py:1070
+#: zerver/views/streams.py:1061
 #, python-brace-format
 msgid "Unknown subscription property: {property}"
 msgstr ""
 
-#: zerver/views/streams.py:1076
+#: zerver/views/streams.py:1067
 #, python-brace-format
 msgid "Not subscribed to stream id {stream_id}"
 msgstr ""
@@ -5592,7 +6154,7 @@ msgstr ""
 msgid "Invalid json for submessage"
 msgstr "無效的子訊息 json"
 
-#: zerver/views/thumbnail.py:43 zerver/views/upload.py:222
+#: zerver/views/thumbnail.py:44 zerver/views/upload.py:223
 msgid "You are not authorized to view this file.
"
 msgstr ""
 
@@ -5616,112 +6178,112 @@ msgstr ""
 msgid "User has disabled typing notifications for direct messages"
 msgstr ""
 
-#: zerver/views/upload.py:212
+#: zerver/views/upload.py:213
 msgid "This file does not exist or has been deleted.
"
 msgstr ""
 
-#: zerver/views/upload.py:264
+#: zerver/views/upload.py:265
 msgid "Invalid token"
 msgstr "無效的 token"
 
-#: zerver/views/upload.py:266
+#: zerver/views/upload.py:267
 msgid "Invalid filename"
 msgstr "無效的 filename"
 
-#: zerver/views/upload.py:309
+#: zerver/views/upload.py:310
 msgid "You must specify a file to upload"
 msgstr "您上傳必須指定一個檔案"
 
-#: zerver/views/upload.py:311 zerver/views/users.py:434
+#: zerver/views/upload.py:312 zerver/views/users.py:434
 #: zerver/views/users.py:536
 msgid "You may only upload one file at a time"
 msgstr "你單次只可以上傳一個檔案"
 
-#: zerver/views/user_groups.py:109
+#: zerver/views/user_groups.py:110
 msgid "No new data supplied"
 msgstr ""
 
-#: zerver/views/user_groups.py:210
+#: zerver/views/user_groups.py:211
 #, python-brace-format
 msgid "{user_full_name} added you to the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:215
+#: zerver/views/user_groups.py:216
 #, python-brace-format
 msgid "{user_full_name} removed you from the group {group_name}."
 msgstr ""
 
-#: zerver/views/user_groups.py:247
+#: zerver/views/user_groups.py:248
 #, python-brace-format
 msgid "User {user_id} is already a member of this group"
 msgstr "使用者 {user_id} 已是此群組的成員"
 
-#: zerver/views/user_groups.py:276
+#: zerver/views/user_groups.py:277
 #, python-brace-format
 msgid "There is no member '{user_id}' in this user group"
 msgstr ""
 
-#: zerver/views/user_groups.py:305
+#: zerver/views/user_groups.py:306
 #, python-brace-format
 msgid "User group {group_id} is already a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_groups.py:316
+#: zerver/views/user_groups.py:317
 #, python-brace-format
 msgid ""
 "User group {user_group_id} is already a subgroup of one of the passed "
 "subgroups."
 msgstr ""
 
-#: zerver/views/user_groups.py:344
+#: zerver/views/user_groups.py:345
 #, python-brace-format
 msgid "User group {group_id} is not a subgroup of this group."
 msgstr ""
 
-#: zerver/views/user_settings.py:64
+#: zerver/views/user_settings.py:60
 msgid "Avatar changes are disabled in this organization."
 msgstr ""
 
-#: zerver/views/user_settings.py:73
+#: zerver/views/user_settings.py:69
 msgid "Email address changes are disabled in this organization."
 msgstr "此組織修改 Email 地址已禁用"
 
-#: zerver/views/user_settings.py:174
+#: zerver/views/user_settings.py:170
 msgid "Invalid default_language"
 msgstr "無效的 default_language"
 
-#: zerver/views/user_settings.py:182
+#: zerver/views/user_settings.py:178
 #, python-brace-format
 msgid "Invalid notification sound '{notification_sound}'"
 msgstr ""
 
-#: zerver/views/user_settings.py:193
+#: zerver/views/user_settings.py:189
 #, python-brace-format
 msgid "Invalid email batching period: {seconds} seconds"
 msgstr ""
 
-#: zerver/views/user_settings.py:332
+#: zerver/views/user_settings.py:328
 msgid "Your Zulip password is managed in LDAP"
 msgstr ""
 
-#: zerver/views/user_settings.py:342
+#: zerver/views/user_settings.py:338
 msgid "Wrong password!"
 msgstr "密碼錯誤!"
 
-#: zerver/views/user_settings.py:347
+#: zerver/views/user_settings.py:343
 #, python-brace-format
 msgid "You're making too many attempts! Try again in {seconds} seconds."
 msgstr ""
 
-#: zerver/views/user_settings.py:353
+#: zerver/views/user_settings.py:349
 msgid "New password is too weak!"
 msgstr ""
 
-#: zerver/views/user_settings.py:409
+#: zerver/views/user_settings.py:405
 msgid "You must upload exactly one avatar."
 msgstr "您上傳必須指定一個 avatar。"
 
-#: zerver/views/user_topics.py:50
+#: zerver/views/user_topics.py:51
 msgid "Topic is not muted"
 msgstr "主題已沒靜音"
 
@@ -5782,43 +6344,43 @@ msgstr ""
 msgid "Email '{email}' already in use"
 msgstr ""
 
-#: zerver/views/video_calls.py:47
+#: zerver/views/video_calls.py:48
 msgid "Invalid Zoom access token"
 msgstr "無效的 Zoom access token"
 
-#: zerver/views/video_calls.py:52
+#: zerver/views/video_calls.py:53
 msgid "Zoom credentials have not been configured"
 msgstr ""
 
-#: zerver/views/video_calls.py:127
+#: zerver/views/video_calls.py:128
 msgid "Invalid Zoom session identifier"
 msgstr "無效的 Zoom session identifier"
 
-#: zerver/views/video_calls.py:139
+#: zerver/views/video_calls.py:140
 msgid "Invalid Zoom credentials"
 msgstr "無效的 Zoom credentials"
 
-#: zerver/views/video_calls.py:177
+#: zerver/views/video_calls.py:178
 msgid "Failed to create Zoom call"
 msgstr "新建 Zoom 通話失敗"
 
-#: zerver/views/video_calls.py:224
+#: zerver/views/video_calls.py:225
 msgid "BigBlueButton is not configured."
 msgstr ""
 
-#: zerver/views/video_calls.py:229
+#: zerver/views/video_calls.py:230
 msgid "Invalid signature."
 msgstr ""
 
-#: zerver/views/video_calls.py:259
+#: zerver/views/video_calls.py:260
 msgid "Error connecting to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:263
+#: zerver/views/video_calls.py:264
 msgid "Error authenticating to the BigBlueButton server."
 msgstr ""
 
-#: zerver/views/video_calls.py:266
+#: zerver/views/video_calls.py:267
 msgid "BigBlueButton server returned an unexpected error."
 msgstr ""
 
@@ -5851,11 +6413,11 @@ msgstr "無效的 payload"
 msgid "Unknown webhook request"
 msgstr "未知的 webhook 請求"
 
-#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:40
+#: zerver/webhooks/ifttt/view.py:31 zerver/webhooks/zapier/view.py:42
 msgid "Topic can't be empty"
 msgstr "主題不可為空"
 
-#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:43
+#: zerver/webhooks/ifttt/view.py:34 zerver/webhooks/zapier/view.py:45
 msgid "Content can't be empty"
 msgstr "內容不能為空"
 
@@ -5882,7 +6444,7 @@ msgstr ""
 msgid "Events key is missing from payload"
 msgstr ""
 
-#: zerver/webhooks/pivotal/view.py:189
+#: zerver/webhooks/pivotal/view.py:190
 msgid "Unable to handle Pivotal payload"
 msgstr ""
 
@@ -5899,83 +6461,105 @@ msgstr "來自 Slack 的訊息"
 msgid "Unknown WordPress webhook action: {hook}"
 msgstr ""
 
-#: zerver/worker/queue_processors.py:1143
+#: zerver/worker/queue_processors.py:1160
 #, python-brace-format
 msgid ""
 "Your data export is complete. [View and download "
 "exports]({export_settings_link})."
 msgstr ""
 
-#: zilencer/auth.py:97
+#: zilencer/auth.py:98
 msgid "Invalid subdomain for push notifications bouncer"
 msgstr "無效的推送通知 bouncer 子域名"
 
-#: zilencer/auth.py:116
+#: zilencer/auth.py:117
 msgid "Must validate with valid Zulip server API key"
 msgstr "需驗證是否為可用的 Zulip server API"
 
 #. error
-#: zilencer/views.py:77 zilencer/views.py:79
+#: zilencer/views.py:92 zilencer/views.py:94
 msgid "Invalid UUID"
 msgstr "無效的 UUID"
 
 #. error
-#: zilencer/views.py:84
+#: zilencer/views.py:99
 msgid "Invalid token type"
 msgstr "無效的 token 類型"
 
-#: zilencer/views.py:122
+#: zilencer/views.py:137
 #, python-brace-format
 msgid "{hostname} is not a valid hostname"
 msgstr ""
 
-#: zilencer/views.py:175
+#: zilencer/views.py:164
+#, python-brace-format
+msgid "{domain} does not exist or is not configured to accept email."
+msgstr ""
+
+#: zilencer/views.py:188
+#, python-brace-format
+msgid "A server with hostname {hostname} already exists"
+msgstr ""
+
+#: zilencer/views.py:232
 msgid "Missing ios_app_id"
 msgstr ""
 
-#: zilencer/views.py:178
+#: zilencer/views.py:235
 msgid "Missing user_id or user_uuid"
 msgstr "未填寫 user_id 或 user_uuid"
 
-#: zilencer/views.py:603
+#: zilencer/views.py:485
+#, python-brace-format
+msgid ""
+"Your plan doesn't allow sending push notifications. Reason provided by the "
+"server: {reason}"
+msgstr ""
+
+#: zilencer/views.py:518
+msgid "Your plan doesn't allow sending push notifications."
+msgstr ""
+
+#: zilencer/views.py:723
 #, python-brace-format
 msgid "Invalid property {property}"
 msgstr ""
 
-#: zilencer/views.py:606
+#: zilencer/views.py:726
 msgid "Invalid event type."
 msgstr ""
 
-#: zilencer/views.py:613
+#: zilencer/views.py:733
 msgid "Data is out of order."
 msgstr ""
 
-#: zilencer/views.py:675
+#: zilencer/views.py:823
 msgid "Duplicate registration detected."
 msgstr ""
 
-#: zilencer/views.py:905
+#: zilencer/views.py:1012
+#, python-brace-format
 msgid ""
-"Failed to migrate customer from server to realms. Please contact support for"
-" assistance."
+"Couldn't reconcile billing data between server and realm. Please contact "
+"{support_email}"
 msgstr ""
 
-#: zilencer/views.py:957
+#: zilencer/views.py:1138
 msgid "Malformed audit log data"
 msgstr ""
 
-#: zproject/backends.py:529
+#: zproject/backends.py:546
 msgid "You need to reset your password."
 msgstr "你需要重置密碼。"
 
-#: zproject/backends.py:2289
+#: zproject/backends.py:2342
 msgid "Missing id_token parameter"
 msgstr "缺少 id_token 參數"
 
-#: zproject/backends.py:3002
+#: zproject/backends.py:3055
 msgid "Invalid OTP"
 msgstr "無效的 OTP"
 
-#: zproject/backends.py:3005
+#: zproject/backends.py:3058
 msgid "Can't use both mobile_flow_otp and desktop_flow_otp together."
 msgstr "無法同時使用 mobile_flow_otp 和 desktop_flow_otp。"
diff --git a/locale/zh_TW/translations.json b/locale/zh_TW/translations.json
index eea0ac4004..6a7352b742 100644
--- a/locale/zh_TW/translations.json
+++ b/locale/zh_TW/translations.json
@@ -1,22 +1,21 @@
 {
   "%'{file}' exceeds the maximum file size for attachments ({variable} MB).": "",
-  "(attached file)": "",
+  "(attached file)": "(附件)",
   "(forever)": "(永久)",
   "(hidden)": "(隱藏)",
-  "(no description)": "(無敘述)",
   "(no topic)": "(無主題)",
   "(or )": "",
   "(you)": "(您)",
   "({message_retention_days} days)": "({message_retention_days} 日)",
   "/dark (Switch to the dark theme)": "/dark (切換至深色主題)",
   "/light (Switch to light theme)": "/light (切換至淺色主題)",
-  "/me is excited (Display action text)": "",
-  "/poll Where should we go to lunch today? (Create a poll)": "",
-  "/todo (Create a todo list)": "",
+  "/me (Action message)": "",
+  "/poll (Create a poll)": "",
+  "/todo (Create a collaborative to-do list)": "",
   "1 day": "1 天",
   "1 hour": "1 小時",
   "1 week": "1 週",
-  "10 days": "",
+  "10 days": "10天",
   "10 minutes": "10 分鐘",
   "12-hour clock (5:00 PM)": "12 小時制(5:00 PM)",
   "2 minutes": "2 分鐘",
@@ -28,7 +27,7 @@
   "6 hours": "6 小時",
   "Total messages: {total_messages}": "",
   "{file_name} will be removed from the messages where it was shared. This action cannot be undone.
": "",
-  "Stream will be announced in #{notifications_stream}.
": "",
+  "Stream will be announced in #{new_stream_announcements_stream}.
": "",
   "You are searching for messages that are sent by more than one person, which is not possible.
": "",
   "You are searching for messages that belong to more than one stream, which is not possible.
": "",
   "You are searching for messages that belong to more than one topic, which is not possible.
": "",
@@ -76,6 +75,7 @@
   "Activity unknown": "",
   "Add": "新增",
   "Add GIF": "新增 GIF",
+  "Add a description": "",
   "Add a new alert word": "新增個全新的警示詞",
   "Add a new bot": "新增個全新的機器人",
   "Add a new code playground": "",
@@ -207,6 +207,7 @@
   "Bot": "機器人",
   "Bot email": "機器人 email",
   "Bot email (a-z, 0-9, and dashes only)": "機器人 email(只允許小寫英文字母 a-z、數字 0-9、跟 -)",
+  "Bot is deactivated": "",
   "Bot owner": "",
   "Bot type": "機器人類型",
   "Bots": "機器人",
@@ -257,7 +258,7 @@
   "Close this dialog window": "",
   "Code": "",
   "Code playgrounds": "",
-  "Code playgrounds are interactive in-browser development environments, such as replit, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
+  "Code playgrounds are interactive in-browser development environments, that are designed to make it convenient to edit and debug code. Zulip code blocks that are tagged with a programming language will have a button visible on hover that allows users to open the code block on the code playground site.": "",
   "Collapse compose": "",
   "Collapse direct messages": "",
   "Collapse message": "",
@@ -278,6 +279,7 @@
   "Configure the authentication methods for your organization.": "設定您的組織驗證方法",
   "Configure the default streams new users are subscribed to when joining your organization.": "設定預設串流,新加入組織的都會訂閱。",
   "Confirm": "確認",
+  "Confirm changing access permissions": "",
   "Consider searching all public streams.": "",
   "Contact a moderator to resolve this topic.": "",
   "Contact a moderator to unresolve this topic.": "",
@@ -292,6 +294,7 @@
   "Copy code": "",
   "Copy link": "複製網址",
   "Copy link to message": "",
+  "Copy link to profile": "",
   "Copy link to topic": "複製連結到主題",
   "Copy mention syntax": "",
   "Copy version": "",
@@ -358,6 +361,7 @@
   "Delete all drafts": "",
   "Delete all selected drafts": "",
   "Delete code playground?": "",
+  "Delete custom profile field": "",
   "Delete custom profile field?": "",
   "Delete data export?": "",
   "Delete draft": "刪除草稿",
@@ -394,7 +398,7 @@
   "Detailed search filters documentation": "",
   "Direct message": "",
   "Direct message to me": "",
-  "Direct messages": "",
+  "Direct messages": "私訊",
   "Direct messages are disabled in this organization.": "",
   "Direct messages disabled": "",
   "Disable": "",
@@ -413,7 +417,6 @@
   "Domain": "域名",
   "Don’t allow disposable email addresses": "禁止一次性 email",
   "Download": "下載",
-  "Download .zuliprc": "下載 .zuliprc",
   "Download botserverrc": "下載 botserverrc",
   "Download config of all active outgoing webhook bots in Zulip Botserver format.": "下載活躍 outgoing webhook 機器人的 Zulip Botserver 格式設定檔",
   "Download file": "下載檔案",
@@ -449,6 +452,7 @@
   "Education (for-profit)": "",
   "Education (non-profit)": "",
   "Effect": "效果",
+  "Either this user does not exist, or you do not have access to their profile.": "",
   "Email": "電子郵件",
   "Email address": "Email 地址",
   "Email address changes are disabled in this organization.": "此組織不允許 Email 更改。",
@@ -550,7 +554,7 @@
   "Follow": "",
   "Followed": "",
   "Followed topics": "",
-  "For example, to configure a code playground for code blocks tagged as Python, you can set:": "",
+  "For example, to configure a code playground for code blocks tagged as Rust, you can set:": "",
   "For more examples and technical details, see the help center documentation on adding code playgrounds.": "",
   "For more examples, see the help center documentation on adding linkifiers.": "",
   "Forgot it?": "",
@@ -606,6 +610,8 @@
   "Image": "圖",
   "In a meeting": "在會議中",
   "In muted streams, stream notification settings apply only to unmuted topics.": "",
+  "In this conversation": "",
+  "In this stream": "",
   "Inactive": "",
   "Inactive bots": "不活躍的機器人",
   "Inbox": "",
@@ -704,9 +710,11 @@
   "Manage this bot": "",
   "Manage this user": "",
   "Manage user": "",
+  "Manage your API key": "",
   "March": "三月",
   "Mark all messages as read": "標記所有訊息已讀",
   "Mark all messages as read?": "",
+  "Mark all messages as unread": "",
   "Mark as read": "標記已讀",
   "Mark as resolved": "",
   "Mark as unread from here": "",
@@ -722,6 +730,7 @@
   "Mentioned in": "提到於",
   "Mentions": "提到",
   "Menus": "選單",
+  "Merge with another topic?": "",
   "Message #{stream_name}": "",
   "Message #{stream_name} > {topic_name}": "",
   "Message actions": "訊息動作",
@@ -736,6 +745,7 @@
   "Message {recipient_label}": "",
   "Message {recipient_names}": "",
   "Message {recipient_name} ({recipient_status})": "",
+  "Messages": "訊息",
   "Messages in all public streams": "",
   "Messages sent by you": "",
   "Messages sent by {sender}": "",
@@ -805,6 +815,7 @@
   "Never expires": "",
   "New": "新",
   "New direct message": "",
+  "New direct message from {sender_full_name}": "",
   "New email": "新 email",
   "New message": "新的訊息",
   "New option": "",
@@ -821,25 +832,20 @@
   "Next unread direct message": "",
   "Next unread followed topic": "",
   "Next unread topic": "下一個未讀主題",
-  "No bots found.": "",
+  "No active users.": "",
   "No bots match your current filter.": "無機器人符合您現有的篩選。",
   "No conversations match your filters.": "",
-  "No custom emojis found.": "",
   "No custom emojis match your current filter.": "",
   "No custom profile field configured for this organization.": "",
-  "No deactivated users found.": "",
-  "No default streams found.": "",
   "No default streams match your current filter.": "",
   "No description.": "無敘述。",
   "No drafts selected": "",
   "No drafts.": "無草稿。",
-  "No exports found.": "",
   "No group members match your current filter.": "",
-  "No invites found.": "",
   "No invites match your current filter.": "無邀請符合您現有的篩選。",
   "No language set": "無語言設定",
+  "No linkifiers configured.": "",
   "No linkifiers match your current filter.": "",
-  "No linkifiers set.": "無 linkifiers 設定。",
   "No matching results": "",
   "No matching streams": "",
   "No matching users.": "",
@@ -857,6 +863,7 @@
   "No topics are marked as resolved.": "",
   "No topics match your current filter.": "無主題符合您現有的篩選。",
   "No uploaded files match your current filter.": "",
+  "No user found": "",
   "No user group subscriptions.": "",
   "No user groups": "",
   "No user to subscribe.": "無使用者訂閱。",
@@ -867,6 +874,7 @@
   "Nobody in this Zulip organization will be able to see this email address.": "",
   "Non-profit (registered)": "",
   "None": "無",
+  "None.": "",
   "Note that any bots that you maintain will be disabled.": "注意,您所有維護的機器人都將停用。",
   "Note that organizations are limited to five exports per week.": "此組織被限制每週只能 5 次輸入。",
   "Nothing to preview": "無可預覽",
@@ -932,6 +940,7 @@
   "Other permissions": "其他權限",
   "Other settings": "其他設定",
   "Other users in this Zulip organization will be able to see this email address.": "",
+  "Others": "",
   "Out sick": "生病中",
   "Outgoing webhook message format": "",
   "Override default emoji?": "",
@@ -1018,8 +1027,9 @@
   "Require topics in stream messages": "在串流訊息內需要主題",
   "Research": "研究用途",
   "Resend": "重新發送",
-  "Resend invitation": "重新發送邀請",
+  "Resend invitation?": "",
   "Resending encountered an error. Please reload and try again.": "重新發送遭遇錯誤。請重新載入再重試。",
+  "Reset to default notifications": "",
   "Reset zoom": "",
   "Restore draft": "回復草稿",
   "Restrict email domains of new users?": "限制新使用者 email 的域名?",
@@ -1057,6 +1067,7 @@
   "Search for  in the topic or message content.": "",
   "Search people": "搜尋人",
   "Search results": "搜尋結果",
+  "Search {total_user_count, plural, =1 {1 person} other {# people}}": "",
   "See how to configure email.": "E-mail設定展示",
   "Select a stream": "",
   "Select a stream below or change topic name.": "",
@@ -1107,7 +1118,6 @@
   "Show starred message count": "顯示已標星的訊息數",
   "Show status text": "",
   "Show unread counts for": "",
-  "Show/change your API key": "顯示/修改 您的 API key",
   "Showing messages since {time_string}.": "",
   "Sign up": "註冊",
   "Silent mentions do not trigger notifications.": "",
@@ -1174,9 +1184,16 @@
   "The sender's email address": "",
   "The stream #{stream_name} does not exist. Manage your subscriptions on your Streams page.": "",
   "The stream description cannot contain newline characters.": "該串流的敘述不能含有換行字元。",
+  "The topic {topic_name} already exists in this stream. Are you sure you want to combine messages from these topics? This cannot be undone.": "",
   "Their password will be cleared from our systems, and any bots they maintain will be disabled.": "他們的密碼都將會從我們的系統清除,並且所有他們維護的機器人都將被停用。",
   "Theme": "",
+  "There are no bots.": "",
   "There are no current alert words.": "",
+  "There are no custom emoji.": "",
+  "There are no deactivated users.": "",
+  "There are no default streams.": "",
+  "There are no exports.": "",
+  "There are no invites.": "",
   "There are no messages here.": "",
   "There are no streams you can view in this organization.": "",
   "There are no unread messages in your inbox.": "",
@@ -1189,6 +1206,7 @@
   "This bot cannot be deactivated.": "",
   "This bot cannot be edited.": "",
   "This bot has been deactivated.": "",
+  "This change will make this stream's entire message history accessible according to the new configuration.": "",
   "This conversation may have additional messages not shown in this view.": "",
   "This demo organization will be automatically deleted in {days_remaining} days, unless it's converted into a permanent organization.": "",
   "This feature is available on Zulip Cloud Plus. Upgrade to access.": "",
@@ -1225,6 +1243,7 @@
   "This will clear the  profile field for  users.": "",
   "This will delete the  profile field for 1 user.": "",
   "This will delete the  profile field for  users.": "",
+  "This will not change the expiration time for this invitation.": "",
   "Thursday": "週四",
   "Time": "時間",
   "Time format": "時間格式",
@@ -1240,6 +1259,7 @@
   "Today": "今天",
   "Today at {time}": "",
   "Toggle first emoji reaction on selected message": "",
+  "Toggle preview mode": "",
   "Toggle subscription": "切換訂閱",
   "Toggle the gear menu": "切換 gear 選單",
   "Toggle topic mute": "切換主題靜音",
@@ -1438,6 +1458,7 @@
   "You do not have permission to add other users to streams in this organization.": "",
   "You do not have permission to join this group.": "",
   "You do not have permission to leave this group.": "",
+  "You do not have permission to move messages to another stream in this organization.": "",
   "You do not have permission to move some of the messages in this topic. Contact a moderator to move all messages.": "",
   "You do not have permission to post in this stream.": "",
   "You do not have permission to resolve topics with messages older than {N, plural, one {# day} other {# days}} in this organization.": "",
@@ -1511,8 +1532,7 @@
   "Zulip Server {display_version}": "",
   "Zulip Server {display_version} (modified)": "",
   "Zulip Server {display_version} (patched)": "",
-  "Zulip lets you configure notifications for each topic. You can also automatically follow or unmute topics you start or participate in.": "",
-  "Zulip lets you mute topics and streams to avoid receiving notifications messages you are not interested in. Muting a stream effectively mutes all topics in that stream. You can also manually mute a topic in an unmuted stream, or unmute a topic in a muted stream. Learn more.": "",
+  "Zulip lets you follow topics you are interested in, and mute topics you want to ignore. You can also automatically follow topics you start or participate in, and topics where you're mentioned.": "",
   "Zulip needs to send email to confirm users' addresses and send notifications.": "Zulip 需要發送 email 以確認使用者的地址跟發送通知。",
   "Zulip needs your permission to enable desktop notifications.": "",
   "Zulip's translations are contributed by our amazing community of volunteer translators. If you'd like to help, see the Zulip translation guidelines.": "",
@@ -1541,6 +1561,9 @@
   "more topics": "更多主題",
   "she/her": "",
   "they/them": "",
+  "{N, plural, one {# other user} other {# other users}}": "{N, plural, other {}}",
+  "{N, plural, one {# participant} other {# participants}}": "{N, plural, other {}}",
+  "{N, plural, one {# subscriber} other {# subscribers}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as read.} other {Done! {N} messages marked as read.}}": "{N, plural, other {}}",
   "{N, plural, one {Done! {N} message marked as unread.} other {Done! {N} messages marked as unread.}}": "{N, plural, other {}}",
   "{N, plural, one {User invited successfully.} other {Users invited successfully.}}": "{N, plural, other {}}",